<?xml version="1.0"?>
<doc>
    <assembly>
        <name>Centido.Core</name>
    </assembly>
    <members>
        <member name="T:Centido.Core.DateTimeColumn">
            <summary>
              A datetime table column.
            </summary>
            <example>
              The following example shows how to use a datetime column.
            <code>
                using System;
                using System.Data.Common;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
            
                        //Creating a datetime column
                        var column = table.AddColumn("my_column", ColumnType.DateTime)
                            as DateTimeColumn;
            
                        //Setting the column minimum and maximum
                        column.Minimum = DateTime.Now.AddYears(-1);
                        column.Maximum = DateTime.Now.AddYears(1);
            
                        //Setting the default value
                        column.DefaultValue = DateTime.Now;
            
                        //Inserting a row
                        var id = table.InsertRow();
            
                        Console.WriteLine("The inserted value = {0}", column.Read(id).GetDateTime());
            
                        //Updating the row
                        table.UpdateRow(id, column.Value(DateTime.Now.AddDays(1)));
            
                        Console.WriteLine("The updated value = {0}", column.Read(id).GetDateTime());
                    }
                }
            </code>
            </example>
        </member>
        <member name="T:Centido.Core.Column">
             <summary>
               A column in a user-defined table.
             </summary>
             <example>
               The following example shows how to add columns to a user-defined table.
             <code>
                 using System;
                 using Centido.Core;
             
                 class Sample
                 {
                     static void Main()
                     {
                         var domainConfig = new DomainConfiguration()
                         {
                             DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                             DbProviderName = "System.Data.SqlClient"
                         };
                     
                         var domain = Domain.Build(domainConfig);
                     
                         domain.DeleteAll();
                         
                         //Adding a new table
                         var table = domain.AddTable("students");
                         
                         //Adding some table columns
                         var nameColumn = table.AddColumn("name", ColumnType.String) as StringColumn;
                         nameColumn.IsNotNull = true;
                         nameColumn.IsNotEmpty = true;
                         nameColumn.MaxLength = 64;
             
                         var birthdayColumn = table.AddColumn("birthday", ColumnType.DateTime) as DateTimeColumn;
                         birthdayColumn.IsNotNull = true;
             
                         //Populating the table with data
                         table.GrantAll();
            
                         table.InsertRow(nameColumn.Value("John Smith"), birthdayColumn.Value(DateTime.Now.AddYears(-30)));
                         table.InsertRow(nameColumn.Value("Mary Sue"), birthdayColumn.Value(DateTime.Now.AddYears(-27)));
                     }
                 }   
             </code>
             </example>
        </member>
        <member name="T:Centido.Core.IRenamable">
            <summary>
              Represents an object that can be renamed.
            </summary>
        </member>
        <member name="P:Centido.Core.IRenamable.Name">
            <summary>
              Gets or sets the object name.
            </summary>
        </member>
        <member name="T:Centido.Core.IRemovable">
            <summary>
              Represents an object that can be deleted.
            </summary>
        </member>
        <member name="M:Centido.Core.IRemovable.Delete">
            <summary>
              Deletes the object.
            </summary>
        </member>
        <member name="M:Centido.Core.IRemovable.Exists">
            <summary>
              Checks the existence of the object.
            </summary>
            <returns>Returns true if the object still exists; otherwise, returns false.</returns>
        </member>
        <member name="T:Centido.Core.IIdentifiedById">
            <summary>
              Represents an object that is identified by id.
            </summary>
        </member>
        <member name="M:Centido.Core.IIdentifiedById.GetRawId">
            <summary>
              Gets the id of the object in the binary format.
            </summary>
            <returns>Returns the id of the object in the binary format.</returns>
        </member>
        <member name="P:Centido.Core.IIdentifiedById.Id">
            <summary>
              Gets the object id.
            </summary>
        </member>
        <member name="T:Centido.Core.IRefreshable">
            <summary>
              Represents an object which fields can be refreshed.
            </summary>
        </member>
        <member name="M:Centido.Core.IRefreshable.Refresh">
            <summary>
              Refreshes the object fields.
            </summary>
        </member>
        <member name="F:Centido.Core.Column._table">
            <summary>
              The parent table.
            </summary>
        </member>
        <member name="F:Centido.Core.Column._name">
            <summary>
              The column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Column._displayName">
            <summary>
              The column display name.
            </summary>
        </member>
        <member name="F:Centido.Core.Column._description">
            <summary>
              The column description.
            </summary>
        </member>
        <member name="F:Centido.Core.Column._isNotNull">
            <summary>
              The column ability to hold null values.
            </summary>
        </member>
        <member name="F:Centido.Core.Column._customizationLevel">
            <summary>
              The column customization level.
            </summary>
        </member>
        <member name="F:Centido.Core.Column._orderIndex">
            <summary>
              The column order index.
            </summary>
        </member>
        <member name="M:Centido.Core.Column.#ctor(System.Guid,Centido.Core.Table)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.Column"/> class
              for the specified column id and parent table.
            </summary>
            <param name="columnId">The column id.</param>
            <param name="table">The parent table.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Column.#ctor(System.Guid,Centido.Core.Table,System.String,System.String,System.String,System.Boolean,System.Int32,System.Int32)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.Column"/> class
              for the specified column id, name, display name,
            description, nullability, order index, customization level and parent table.
            </summary>
            <param name="columnId">The column id.</param>
            <param name="table">The parent table.</param>
            <param name="columnName">The column name.</param>
            <param name="displayName">The column display name.</param>
            <param name="description">The column description.</param>
            <param name="isNotNull">The column ability to hold null values.</param>
            <param name="orderIndex">The column order index.</param>
            <param name="customizationlevel">The column customization level.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
        </member>
        <member name="M:Centido.Core.Column.Exists">
            <summary>
              Checks the existence of the table column.
            </summary>
            <returns>Returns true if the table column still exists; otherwise, returns false.</returns>
        </member>
        <member name="M:Centido.Core.Column.Delete">
            <summary>
              Delete current table column.
              Current user has to have CanChangeSchema=true in order to execute thsi function
            </summary>
        </member>
        <member name="M:Centido.Core.Column.GetRawId">
            <summary>
              Gets the column id formatted as a byte array.
            </summary>
            <returns>Returns the column id formatted as a byte array.</returns>
        </member>
        <member name="M:Centido.Core.Column.EmptyValue">
            <summary>
              Creates an empty column value.
            </summary>
            <remarks>An empty column value can be used when reading table rows.</remarks>
            <returns>Returns an empty column value.</returns>
            <example>
              The following example shows how to use empty column values when reading table rows.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Adding a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a new column
                        var column = table.AddColumn("my_column", ColumnType.String);
                        
                        //Granting all necessary permissions
                        table.GrantAll();
            
                        //Inserting a value
                        var id = table.InsertRow(column.Value("My column value"));
                        
                        //Creating an empty column value
                        var inserted = column.EmptyValue();
            
                        //Reading the column value
                        table.ReadRow(id, inserted);
            
                        Console.WriteLine("Column value: {0}", inserted.GetString());
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Column.Value(System.Object)">
            <summary>
              Creates a column value.
            </summary>
            <remarks>This method can be used when inserting table rows.</remarks>
            <param name = "columnValue">The value inside the column.</param>
            <returns>Returns a column value.</returns>
            <example>
              The following example shows how to create column values when inserting table rows.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Adding a new table
                        var table = domain.AddTable("my_table");
            
                        //Adding two columns
                        var firstColumn = table.AddColumn("first_column", ColumnType.String);
                        var secondColumn = table.AddColumn("second_column", ColumnType.Integer);
            
                        //Granting all necessary permissions
                        table.GrantAll();
            
                        //Inserting a row
                        var id = table.InsertRow(firstColumn.Value("My value"), secondColumn.Value(1));
            
                        //Reading inserted values
                        Console.WriteLine("Row: first column = {0}, second column = {1}",
                            firstColumn.Read(id).GetString(),
                            secondColumn.Read(id).GetInteger());
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Column.Read(System.Guid)">
            <summary>
              Reads data in the column of the specified row.
            </summary>
            <remarks>The current user has to have the select permission on the table in order to execute this function.</remarks>
            <param name="rowId">The id of the specified row.</param>
            <returns>Returns the value in the column if the specified row exists; otherwise, null.</returns>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following example shows how to read data in the column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Adding a new table
                        var table = domain.AddTable("my_table");
            
                        //Adding two columns
                        var firstColumn = table.AddColumn("first_column", ColumnType.String);
                        var secondColumn = table.AddColumn("second_column", ColumnType.Integer);
            
                        //Granting all necessary permissions
                        table.GrantAll();
            
                        //Inserting a row
                        var id = table.InsertRow(firstColumn.Value("My value"), secondColumn.Value(1));
            
                        //Reading inserted values
                        Console.WriteLine("Row: first column = {0}, second column = {1}",
                            firstColumn.Read(id).GetString(),
                            secondColumn.Read(id).GetInteger());
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Column.Read(System.Guid,Centido.Core.DataSource)">
            <summary>
              Reads data in the column of the specified row from the specified data source.
            </summary>
            <remarks>The current user has to have the select permission on the table in order to execute this function
            if the data source is the user view of the table. And the current user has to have the permission
            to change the schema if the data source is the internal table.</remarks>
            <param name="rowId">The id of the specified row.</param>
            <param name="dataSource">The specified data source.</param>
            <returns>Returns the value in the column if the specified row exists; otherwise, null.</returns>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following example shows how to read data in the column from the internal table.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Adding a new table
                        var table = domain.AddTable("my_table");
            
                        //Adding two columns
                        var firstColumn = table.AddColumn("first_column", ColumnType.String);
                        var secondColumn = table.AddColumn("second_column", ColumnType.Integer);
            
                        //Granting all necessary permissions
                        table.GrantAll();
            
                        //Inserting a row
                        var id = table.InsertRow(firstColumn.Value("My value"), secondColumn.Value(1));
            
                        //Reading inserted values
                        Console.WriteLine("Row: first column = {0}, second column = {1}",
                            firstColumn.Read(id, DataSource.InternalTable).GetString(),
                            secondColumn.Read(id, DataSource.InternalTable).GetInteger());
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Column.ReadAll(System.Action{Centido.Core.ColumnValue})">
            <summary>
              Reads data in the column in all rows.
            </summary>
            <remarks>
            The current user has to have the select permission on the table in order to execute this function.
            </remarks>
            <param name="readAction">The read action to performed upon each row.</param>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following example shows how to read data in the column in all rows.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Adding a new table
                        var table = domain.AddTable("students");
            
                        //Adding a column
                        var surnameColumn = table.AddColumn("surname", ColumnType.String);
            
                        //Granting all necessary permissions
                        table.GrantAll();
            
                        //Inserting two rows
                        table.InsertRow(surnameColumn.Value("Smith"));
                        table.InsertRow(surnameColumn.Value("Brown"));
            
                        //Reading the column in all rows
                        surnameColumn.ReadAll(surname =&gt;
                        {
                            Console.WriteLine("Student: surname = {0}", surname.GetString());
                        });
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Column.ReadAll(Centido.Core.DataSource,System.Action{Centido.Core.ColumnValue})">
            <summary>
              Reads data in the column in all rows from the specified data source.
            </summary>
            <remarks>The current user has to have the select permission on the specified data source
            on order to execute this function.</remarks>
            <param name="dataSource">The target data source.</param>
            <param name="readAction">The read action to be performed upon each row.</param>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission on the specified data source.</exception>
            <example>
              The following example shows how to read data in the column in all rows from the specified data source.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Adding a new table
                        var table = domain.AddTable("students");
            
                        //Adding a column
                        var surnameColumn = table.AddColumn("surname", ColumnType.String);
            
                        //Granting all necessary permissions
                        table.GrantAll();
            
                        //Inserting two rows
                        table.InsertRow(surnameColumn.Value("Smith"));
                        table.InsertRow(surnameColumn.Value("Brown"));
            
                        //Reading the column in all rows
                        surnameColumn.ReadAll(DataSource.UserView, surname =&gt;
                        {
                            Console.WriteLine("Student: surname = {0}", surname.GetString());
                        });
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Column.Update(System.Guid,System.Object)">
            <summary>
              Updates data in the column of the specified row.
            </summary>
            <remarks>
            The current user has to have the update permission on the table in order to execute this function.
            </remarks>
            <param name="rowId">The id of the specified row.</param>
            <param name="value">The new data.</param>
            <returns>Returns true if a row with the specified id and version was found; otherwise, false.</returns>
            <exception cref="T:System.Data.Common.DbException">Thrown when the user has no permission to execute this function.</exception>
            <example>
              The following example shows how to update data inside the column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Adding a new table
                        var table = domain.AddTable("my_table");
            
                        //Adding two columns
                        var firstColumn = table.AddColumn("first_column", ColumnType.String);
                        var secondColumn = table.AddColumn("second_column", ColumnType.Integer);
            
                        //Granting all necessary permissions
                        table.GrantAll();
            
                        //Inserting a row
                        var id = table.InsertRow(firstColumn.Value("My value"), secondColumn.Value(1));
            
                        //Reading inserted values
                        Console.WriteLine("Inserted row: first column = {0}, second column = {1}",
                            firstColumn.Read(id).GetString(),
                            secondColumn.Read(id).GetInteger());
            
                        //Updating the row
                        firstColumn.Update(id, "The updated value");
                        secondColumn.Update(id, 2);
            
                        //Reading updated values
                        Console.WriteLine("Updated row: first column = {0}, second column = {1}",
                            firstColumn.Read(id).GetString(),
                            secondColumn.Read(id).GetInteger());
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Column.Update(System.Guid,System.Nullable{System.Guid},System.Object)">
            <summary>
              Updates data in the column of a row with the specified id and version in the table.
            </summary>
            <remarks>
            <para>Updating specifying the version of the row guarantees
            that the row has not changed since the last selection.</para>
            <para> The current user has to have the update permission on the table in order to execute this function
            if the data source is the user view of the table. And the current user has to have the permission
            to change the schema if the data source is the internal table.</para>
            </remarks>
            <param name="rowId">The id of the row.</param>
            <param name="expectedRowVersion">The expected version of the row.</param>
            <param name="value">The new data.</param>
            <exception cref="T:System.Data.Common.DbException">Thrown when the user has no permission to execute this function.</exception>
            <returns>Returns true if a row with the specified id and version was found; otherwise, false.</returns>
            <example>
              The following example shows how to update data in the column specifying the id and the version of the row.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Adding a new table
                        var table = domain.AddTable("my_table");
            
                        //Adding a column
                        var column = table.AddColumn("my_column", ColumnType.String);
            
                        //Granting all necessary permissions
                        table.GrantAll();
            
                        //Inserting a row
                        var id = table.InsertRow(column.Value("My value"));
            
                        //Reading the row version
                        var rowVersion = table.SystemColumns.RowVersion.Read(id).GetGuid().Value;
            
                        //Updating the column specifying the row version
                        var updateResult = column.Update(id, rowVersion, DataSource.UserView, "My new value");
            
                        Console.WriteLine("The first update: result = {0}", updateResult);
                        Console.WriteLine("The column: value = {0}", column.Read(id).GetString());
            
                        //Updating the column specifying the outdated row version
                       updateResult = column.Update(id, rowVersion, DataSource.UserView, "Another value");
            
                        Console.WriteLine("The first update: result = {0}", updateResult);
                        Console.WriteLine("The column: value = {0}", column.Read(id).GetString());
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Column.UpdateImplementation(System.Guid,System.Nullable{System.Guid},System.Object)">
            <summary>
              Updates data in the column of the specified row in the table.
            </summary>
            <param name = "rowId">The id of the specified row.</param>
            <param name="expectedRowVersion">The expected version of the row.</param>
            <param name = "value">The new data.</param>
            <returns>Returns true if a row with the specified id was found; otherwise, false.</returns>
        </member>
        <member name="M:Centido.Core.Column.PrepareForRemoving">
            <summary>
              Prepares the column for removing.
            </summary>
            <remarks>A column of each type handles this operation differently.</remarks>
        </member>
        <member name="M:Centido.Core.Column.ReadProperty(System.String)">
            <summary>
              Reads the column property.
            </summary>
            <param name = "propertyName">The property name.</param>
            <returns>Returns the property value.</returns>
        </member>
        <member name="M:Centido.Core.Column.WriteProperty(System.String,System.Object,System.Data.OdbcType)">
            <summary>
              Updates the column property.
            </summary>
            <param name = "propertyName">The property name.</param>
            <param name = "propertyValue">The new property value.</param>
            <param name = "propertyType">The property database type.</param>
        </member>
        <member name="M:Centido.Core.Column.GetDataSourceName(Centido.Core.DataSource)">
            <summary>
              Retrives the table name that corresponds to the specified data source.
            </summary>
            <param name="source">The target data source.</param>
            <returns>Returns the table name that corresponds to the specified data source.</returns>
        </member>
        <member name="M:Centido.Core.Column.ReadImplementation(System.Guid,Centido.Core.DataSource)">
            <summary>
              Reads the data in the column of the specified row from the specified data source.
            </summary>
            <param name = "rowId">The id of the specified row.</param>
            <param name = "dataSource">The specified data source.</param>
            <returns>Returns the value in the column if the specified row exists; otherwise, null.</returns>
        </member>
        <member name="M:Centido.Core.Column.ReadAllImplementation(Centido.Core.DataSource,System.Action{Centido.Core.ColumnValue})">
            <summary>
              Reads the data in the column in all rows in the specified data source.
            </summary>
            <param name="dataSource">The target data source.</param>
            <param name="readAction">The read action to be performed upon each row.</param>
        </member>
        <member name="M:Centido.Core.Column.Refresh">
            <summary>
              Refreshes the properties of the column.
            </summary>
        </member>
        <member name="P:Centido.Core.Column.ColumnType">
            <summary>
              Gets the column type.
            </summary>
            <example>
              The following example shows how to enumerate system columns types.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Adding a new table
                        var table = domain.AddTable("my_table");
                        
                        //Enumerating system columns types
                        foreach(var column in table.Columns)
                            Console.WriteLine("Column: name = {0}, type = {1}", column.Name, column.ColumnType);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.Column.ValueOdbcType">
            <summary>
              Gets the column value database type.
            </summary>
            <example>
              The following example shows how to enumerate system columns database types.
            <code>
            </code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Adding a new table
                        var table = domain.AddTable("my_table");
                        
                        //Enumerating system columns types
                        foreach(var column in table.Columns)
                            Console.WriteLine("Column: name = {0}, db type = {1}", column.Name, column.ValueOdbcType);
                    }
                }
            </example>
        </member>
        <member name="P:Centido.Core.Column.DisplayName">
            <summary>
              Gets or sets the display name of the column.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to set this property.</remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to set this property.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to set this property on a deleted column.</exception>
            <example>
              The following example shows how to get and set the display name of a table column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Adding a new table
                        var table = domain.AddTable("my_table");
                        
                        //Creating a new column
                        var column = table.AddColumn("my_column", ColumnType.String);
                        
                        //Setting the column display name
                        column.DisplayName = "My new column";
            
                        //Enumerating the columns display names
                        foreach(var c in table.Columns)
                            Console.WriteLine("Column: name = {0}, display name = {1}", c.Name, c.DisplayName);
                    }
                }   
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.Column.Description">
            <summary>
              Gets or sets the description of the column.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to set this property.</remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to set this property.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to set this property on a deleted column.</exception>
            <example>
              The following example shows how to get and set the description of a table column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Adding a new table
                        var table = domain.AddTable("my_table");
                        
                        //Creating a new column
                        var column = table.AddColumn("my_column", ColumnType.String);
                        
                        //Setting the column description
                        column.Description = "The description of the column";
            
                        //Enumerating the columns descriptions
                        foreach(var c in table.Columns)
                            Console.WriteLine("Column: name = {0}, description = {1}", c.Name, c.Description);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.Column.OrderIndex">
            <summary>
              Gets or sets the column order index.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to set this property.</remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to set this property.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to set this property on a deleted column.</exception>
            <example>
              The following example shows how to display a column list ordered by the index.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Adding a new table
                        var table = domain.AddTable("my_table");
                        
                        //Creating a new column
                        table.AddColumn("my_column", ColumnType.Integer);
            
                        //Displaying a column list ordered by the index
                        foreach(var c in table.Columns.OrderBy(c =&gt; c.OrderIndex))
                            Console.WriteLine("Column: name = {0}, index = {1}", c.Name, c.OrderIndex);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.Column.IsNotNull">
            <summary>
              Gets or sets the column ability to hold null values.
            </summary>
            <value>True if the column can hold null values; otherwise, null.</value>
            <remarks>The current user has to have the permission to change the schema in order to set this property.</remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to set this property.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to change this property on a system column.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to set this property on a deleted column.</exception>
            <example>
              The following example shows how to set the column ability to hold null values.
            <code>
                using System;
                using System.Data.Common;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Adding a new table
                        var table = domain.AddTable("my_table");
                        
                        //Creating a new column
                        var column = table.AddColumn("my_column", ColumnType.String);
            
                        //Setting the column to be not nullabble
                        column.IsNotNull = true;
            
                        //Granting all necessary permissions
                        table.GrantAll();
                        
                        //Inserting a not null value
                        table.InsertRow(column.Value("A not null value"));
            
                        Console.WriteLine("A not null value was inserted");
            
                        //Trying to insert a null value
                        try
                        {
                            table.InsertRow(column.Value(null));
                        }
                        catch(DbException)
                        {
                            Console.WriteLine("Cannot insert a null value");
                        }
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.Column.CustomizationLevel">
            <summary>
              Gets the customization level of the column.
            </summary>
            <remarks>The customization level determines a set of actions that can be performed upon the column.
            If the customization level is zero then the column is system.</remarks>
            <example>
              The following example shows the customization levels of table columns.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Adding a new table
                        var table = domain.AddTable("my_table");
                        
                        //Creating a new column
                        var column = table.AddColumn("my_column", ColumnType.String);
                        
                        //Displaying the customization level of the columns
                        foreach(var c in table.Columns)
                            Console.WriteLine("Column: name = {0}, customization level = {1}", c.Name, c.CustomizationLevel);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.Column.IsSystem">
            <summary>
              True if the column is a system column; otherwise, false.
            </summary>
        </member>
        <member name="P:Centido.Core.Column.Table">
            <summary>
              Gets the parent table of the column.
            </summary>
        </member>
        <member name="P:Centido.Core.Column.Domain">
            <summary>
              Gets the parent domain.
            </summary>
        </member>
        <member name="P:Centido.Core.Column.BackEndTableName">
            <summary>
              Gets the database table name that stores column of this type.
            </summary>
        </member>
        <member name="P:Centido.Core.Column.Id">
            <summary>
              Gets the column id.
            </summary>
        </member>
        <member name="P:Centido.Core.Column.Name">
            <summary>
              Gets or sets the name of the column.
            </summary>
            <remarks>
            <para>
            The current user has to have the permission to change the schema in order to set this property.
            Moreover, the current database management system must support column renaming.
            </para>
            <para>
            The name of the columns is always lowered and trimmed.
            </para></remarks>
            <exception cref="T:System.ArgumentNullException">Thrown when trying to set the property to null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when trying to set the property to an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the new name is not a valid identifier.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is a column with the same name in the same table.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to set this property.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current database management system doesn't support column renaming.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to set this property on a deleted column.</exception>
            <example>
              The following example shows how to rename a column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Adding a new table
                        var table = domain.AddTable("my_table");             
            
                        //Creating a new column
                        var column = table.AddColumn("my_column", ColumnType.String);
            
                        //Enumerating table columns
                        foreach(var c in table.Columns)
                            Console.WriteLine("Column: name = {0}", c.Name);
                        
                        //Checking if the dbms supports column renaming
                        if (domain.Dbms.ColumnRenaming)
                        {
                            Console.WriteLine("Renaming the column");
            
                            column.Name = "column_new_name";
            
                            //Enumerating table columns
                            foreach(var c in table.Columns)
                                Console.WriteLine("Column: name = {0}", c.Name);
                        }
                    }
                }
            </code>
            </example>
        </member>
        <member name="T:Centido.Core.IDefaultable`1">
            <summary>
              Provides the default value.
            </summary>
            <typeparam name = "T">The type of the value.</typeparam>
        </member>
        <member name="P:Centido.Core.IDefaultable`1.DefaultValue">
            <summary>
              Gets or sets the default value.
            </summary>
        </member>
        <member name="T:Centido.Core.IBoundable`1">
            <summary>
              Provides the bounds of the value.
            </summary>
            <typeparamref name = "T">The type of the value.</typeparamref>
        </member>
        <member name="P:Centido.Core.IBoundable`1.Maximum">
            <summary>
              Gets or sets the maximum.
            </summary>
        </member>
        <member name="P:Centido.Core.IBoundable`1.Minimum">
            <summary>
              Gets or sets the minimum.
            </summary>
        </member>
        <member name="F:Centido.Core.DateTimeColumn._defaultValue">
            <summary>
              The default value of the column.
            </summary>
        </member>
        <member name="F:Centido.Core.DateTimeColumn._minimum">
            <summary>
              The minimum value of the column.
            </summary>
        </member>
        <member name="F:Centido.Core.DateTimeColumn._maximum">
            <summary>
              The maximum value of the column.
            </summary>
        </member>
        <member name="M:Centido.Core.DateTimeColumn.#ctor(System.Guid,Centido.Core.Table)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.DateTimeColumn"/> class
              for the specified column id and parent table.
            </summary>
            <param name="columnId">The column id.</param>
            <param name="table">The parent table.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.DateTimeColumn.#ctor(System.Guid,Centido.Core.Table,System.String,System.String,System.String,System.Boolean,System.Int32,System.Int32)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.DateTimeColumn"/> class
              for the specified column id, name, display name,
            description, nullability, order index, customization level and parent table.
            </summary>
            <param name="columnId">The column id.</param>
            <param name="table">The parent table.</param>
            <param name="columnName">The column name.</param>
            <param name="displayName">The column display name.</param>
            <param name="description">The column description.</param>
            <param name="isNotNull">The column ability to hold null values.</param>
            <param name="orderIndex">The column order index.</param>
            <param name="customizationlevel">The column customization level.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
        </member>
        <member name="M:Centido.Core.DateTimeColumn.Refresh">
            <summary>
              Refreshes the properties of the column.
            </summary>
        </member>
        <member name="M:Centido.Core.DateTimeColumn.Add(Centido.Core.Table,System.String)">
            <summary>
              Adds a new datetime column with the specified name to the specified table.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to execute this function.</remarks>
            <param name="table">The table.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is a column with the same name in the same user-defined table.</exception>
            <returns>Returns the newly created datetime table column.</returns>
            <example>
              The following example shows how to add a datetime column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a datetime table column
                        var column = DateTimeColumn.Add(table, "my_column");
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.DateTimeColumn.Add(Centido.Core.Table,System.Guid,System.String)">
            <summary>
              Adds a new datetime table column with the specified id and name to the specified table.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to execute this function.</remarks>
            <param name="table">The table.</param>
            <param name="columnId">The column id.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is a column with the same id or the same name in the same user-defined table.</exception>
            <returns>Returns the newly created datetime table column.</returns>
            <example>
              The following example shows how to create a datetime table column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a datetime table column
                        var column = DateTimeColumn.Add(table, Guid.NewGuid(), "my_column");
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.DateTimeColumn.Ensure(Centido.Core.Table,System.String)">
            <summary>
              Ensures that the table contains a datetime column with the specified name.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to execute this function.</remarks>
            <param name="table">The table.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to add a column and
            the current user has no permission to change the schema.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the 
            specified name but different column type.</exception>
            <returns>Returns a datetime table column with the specified name.</returns>
            <example>
              The following example shows how to ensure that a table has a datetime column with the specified name.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a datetime table column
                        table.AddColumn("first_column", ColumnType.DateTime);
            
                        //Ensuring the first column
                        DateTimeColumn.Ensure(table, "first_column");
                        //Ensuring the second column
                        DateTimeColumn.Ensure(table, "second_column");
            
                        foreach(var column in table.Columns)
                            Console.WriteLine("Table column: name = {0}, type = {1}", column.Name, column.ColumnType);
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.DateTimeColumn.Ensure(Centido.Core.Table,System.Guid,System.String)">
            <summary>
              Ensures that the table contains a datetime column with the specified id and the specified name.
            </summary>
            <param name="table">The table.</param>
            <param name="columnId">The column id.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to add a column and
            the current user has no permission to change the schema.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the
            specified id but different column name.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the 
            specified id but different column type.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the specified name
            but different column id.</exception>
            <returns>Returns the table column with the specified id, the specified name and the specified type.</returns>
            <returns>Returns the table column with the specified id, the specified name and the specified type.</returns>
            <example>
              The following example shows how to ensure a datetime column with the specified id and
            the specified name.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a table column
                        var columnId = Guid.NewGuid();
                        table.AddColumn(columnId, "first_column", ColumnType.DateTime);
            
                        //Ensuring the first column
                        DateTimeColumn.Ensure(table, columnId, "first_column");
                        //Ensuring the second column
                        DateTimeColumn.Ensure(table, Guid.NewGuid(), "second_column");
            
                        foreach(var column in table.Columns)
                            Console.WriteLine("Table column: name = {0}, type = {1}", column.Name, column.ColumnType);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.DateTimeColumn.ColumnType">
            <summary>
              Gets the column type.
            </summary>
        </member>
        <member name="P:Centido.Core.DateTimeColumn.ValueOdbcType">
            <summary>
              Gets the column value database type.
            </summary>
        </member>
        <member name="P:Centido.Core.DateTimeColumn.BackEndTableName">
            <summary>
              Get the column backend table name.
            </summary>
        </member>
        <member name="P:Centido.Core.DateTimeColumn.Maximum">
            <summary>
              Gets or sets the maximum value of the column.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to set this property.</remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to set this property.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to set this property to true and there are rows that contain invalid values.</exception>
            <example>
                The following example shows how to set the maximum value of a datetime column.
            <code>
                using System;
                using System.Data.Common;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
            
                        //Creating a datetime column
                        var column = table.AddColumn("my_column", ColumnType.DateTime)
                            as DateTimeColumn;
            
                        //Setting the column maximum
                        column.Maximum = DateTime.Now;
            
                        //Trying to insert an invalid value
                        try
                        {
                            table.InsertRow(column.Value(DateTime.Now.AddDays(1)));
                        }
                        catch(DbException)
                        {
                            Console.WriteLine("Inserting values greater than the maximum is forbidden");
                        }
            
                        Console.WriteLine("Table: row count = {0}", table.RowCount);
            
                        //Inserting a valid value
                        table.InsertRow(column.Value(DateTime.Now.AddDays(-1)));
            
                        Console.WriteLine("Table: row count = {0}", table.RowCount);
                    }
                }   
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.DateTimeColumn.Minimum">
            <summary>
              Gets or sets the minimum value of the column.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to set this property.</remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to set the property.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to set this property to true and there are rows that contain invalid values.</exception>
            <example>
              The following example shows how to set the minimum value of a datetime column.
            <code>
                using System;
                using System.Data.Common;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
            
                        //Creating a datetime column
                        var column = table.AddColumn("my_column", ColumnType.DateTime)
                            as DateTimeColumn;
            
                        //Setting the column minimum
                        column.Minimum = DateTime.Now;
            
                        //Trying to insert an invalid value
                        try
                        {
                            table.InsertRow(column.Value(DateTime.Now.AddDays(-1)));
                        }
                        catch(DbException)
                        {
                            Console.WriteLine("Inserting values less than the minimum is forbidden");
                        }
            
                        Console.WriteLine("Table: row count = {0}", table.RowCount);
            
                        //Inserting a valid value
                        table.InsertRow(column.Value(DateTime.Now.AddDays(1)));
            
                        Console.WriteLine("Table: row count = {0}", table.RowCount);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.DateTimeColumn.DefaultValue">
            <summary>
              Gets or sets the default value of the column.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to set this property.</remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to set this property.</exception>
            <example>
              The following example shows how to set the default value of a datetime column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
            
                        //Creating a datetime column
                        var column = table.AddColumn("my_column", ColumnType.DateTime)
                            as DateTimeColumn;
            
                        //Setting the column default value
                        column.DefaultValue = DateTime.Now.AddYears(-10);
            
                        Console.WriteLine("The default value = {0}", column.DefaultValue);
            
                        //Inserting a row
                        var id = table.InsertRow();
            
                        Console.WriteLine("The inserted value = {0}", column.Read(id).GetDateTime());
                    }
                }
            </code>
            </example>
        </member>
        <member name="T:Centido.Core.DbAccess">
            <summary>
              A database access helper used to ease the execution of ADO.NET commands.
            </summary>
            <remarks>
              The class contains a set of methods that can be used when configuring and
              executing ADO.NET commands.
            </remarks>
        </member>
        <member name="F:Centido.Core.DbAccess._dbConnectionString">
            <summary>
              Db connection string
            </summary>
        </member>
        <member name="F:Centido.Core.DbAccess._dbProvider">
            <summary>
              Db provider name
            </summary>
        </member>
        <member name="F:Centido.Core.DbAccess._dbConnection">
            <summary>
              Database connection
            </summary>
        </member>
        <member name="F:Centido.Core.DbAccess._dbProviderFactory">
            <summary>
              Database provider factory
            </summary>
        </member>
        <member name="F:Centido.Core.DbAccess._markerFormat">
            <summary>
              Parameter marker format
            </summary>
        </member>
        <member name="M:Centido.Core.DbAccess.#ctor(System.String,System.String)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.Domain"/> class
              using the specified database connection string and the database provider invariant name.
            </summary>
            <param name="dbConnectionString">The database connection string.</param>
            <param name="dbProviderName">The database provider invariant name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="dbConnectionString"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="dbConnectionString"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="dbProviderName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="dbProviderName"/> is an empty string.</exception>
        </member>
        <member name="M:Centido.Core.DbAccess.OpenDbConnection">
            <summary>
              Opens the connection to the database.
            </summary>
            <returns>Returns an instance of the <see cref="T:System.Data.Common.DbConnection"/>
              used to connect to the database.</returns>
            <exception cref="T:System.Data.Common.DbException">Thrown when establishing a connection to the database failed.</exception>
        </member>
        <member name="M:Centido.Core.DbAccess.CloseDbConnection">
            <summary>
              Closes the database connection.
            </summary>
        </member>
        <member name="M:Centido.Core.DbAccess.FormatMarker(System.String)">
            <summary>
              Formats a ADO.NET parameter marker name in a database specific way.
            </summary>
            <remarks>
              The need for formatting arrises from the fact
              that diferent database management systems dictate different rules of marker naming.
              For instance, Sql Server demands that all marker names start with @ symbol, but
              Oracle doesn't.
            </remarks>
            <param name="markerName">The marker name.</param>
            <returns>Returns a formatted marker name.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="markerName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="markerName"/> is an empty string.</exception>
            <example>
              The following example shows how to use parameter marker name formatting.
              <code>
                using System;
                using Centido.Core;
            
                class MerkerFormattingSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                    
                        //Adding a new table
                        var table = domain.AddTable("my_table");
                    
                        //Adding a new column
                        var column = table.AddColumn("my_column", ColumnType.Integer);
                    
                        //Granting all necessary permissions
                        table.GrantAll();
            
                        //Inserting two rows
                        table.InsertRow(column.Value(0));
                        table.InsertRow(column.Value(2));
                    
                        //Reading ids of rows that have my_column value greater than 1
                        domain.DbAccess.ExecuteReader(cmd =&gt;
                        {
                            cmd.CommandText = string.Format("select id from {0} where {1}&gt;{2}",
                                table.FullName,
                                column.Name,
                                //Formatting parameter name
                                domain.DbAccess.FormatMarker("my_value"));
                                
                            cmd.Parameters.Add(domain.DbAccess.CreateParameter("my_value", OdbcType.Int, 1));
                        },
                        reader =&gt;
                        {
                            Console.WriteLine(DbValue.GetGuid(reader[0]));
                        });             
                    }
                }    
              </code>
            </example>
        </member>
        <member name="M:Centido.Core.DbAccess.CreateCommand">
            <summary>
              Creates a specific to the current database ADO.NET command.
            </summary>
            <returns>Returns the created ADO.NET command.</returns>
        </member>
        <member name="M:Centido.Core.DbAccess.CreateParameter(System.String,System.Data.OdbcType,System.Object)">
            <summary>
              Creates a specific to the current database ADO.NET command parameter.
            </summary>
            <param name="parameterName">The ADO.NET parameter name.</param>
            <param name="dbType">The ADO.NET parameter database type.</param>
            <param name="value">The ADO.NET parameter value.</param>
            <returns>Returns the created ADO.NET command parameter.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="parameterName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="parameterName"/> is an empty string.</exception>
        </member>
        <member name="M:Centido.Core.DbAccess.ExecuteScalar(System.Action{System.Data.Common.DbCommand},System.Action{System.Object})">
            <summary>
              Executes an ADO.NET command that returns a scalar result.
            </summary>
            <param name="configureDbCommand">The action of configuring the ADO.NET command.</param>
            <param name="handleResult">The action of handling database command result.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="configureDbCommand"/> is null.</exception>
            <example>
              The following example shows how to execute an ADO.NET command that returns a scalar result.
              <code>
                using System;
                using Centido.Core;
            
                class ExecuteScalerSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                    
                        //Adding a new table
                        var table = domain.AddTable("my_table");
                    
                        //Granting all necessary permissions
                        table.GrantAll();
            
                        //Inserting two rows
                        table.InsertRow();
                        table.InsertRow();
                    
                        //Reading the row count
                        int rowCount = 0;
                    
                        domain.DbAccess.ExecuteScalar(cmd =&gt;
                        {
                            cmd.CommandText = string.Format("select count(*) from {0}",
                                table.FullName);
                        }, result =&gt; rowCount = DbValue.GetInteger(result).Value);
                    
                        Console.WriteLine("Row count = {0}", rowCount);
                    }
                }
              </code>
            </example>
        </member>
        <member name="M:Centido.Core.DbAccess.ExecuteReader(System.Action{System.Data.Common.DbCommand},System.Action{System.Data.Common.DbDataReader})">
            <summary>
              Executes an ADO.NET command that returns multiple rows.
            </summary>
            <param name="configureDbCommand">The action of configuring the ADO.NET command.</param>
            <param name="handleResult">The action of handling an ADO.NET command results.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="configureDbCommand"/> is null.</exception>
            <example>
              The following example shows how to execute an ADO.NET command that returns multiple rows.
              <code>
                using System;
                using Centido.Core;
            
                class ExecuteReaderSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                    
                        //Adding a new table
                        var table = domain.AddTable("my_table");
                    
                        //Adding a column
                        var column = table.AddColumn("my_column", ColumnType.Integer);
                    
                        //Granting all necessary permissions
                        table.GrantAll();
            
                        //Inserting two rows
                        table.InsertRow(column.Value(1));
                        table.InsertRow(column.Value(2));
                    
                        var columnName = column.Name;
                    
                        //Reading inserted values
                        domain.DbAccess.ExecuteReader(cmd =&gt;
                        {
                            cmd.CommandText = string.Format("select id, {0} from {1}",
                                column.Name,
                                table.FullName);
                        }, reader =&gt;
                        {
                            var rowId = DbValue.GetGuid(reader["id"]).Value;
                            var columnValue = DbValue.GetInteger(reader[columnName]).Value;
            
                            Console.WriteLine("Row id = {0}, column value = {1}", rowId, columnValue);
                        });         
                    }
                }
              </code>
            </example>
        </member>
        <member name="M:Centido.Core.DbAccess.ExecuteNonQuery(System.Action{System.Data.Common.DbCommand})">
            <summary>
              Executes an ADO.NET command that returns no result.
            </summary>
            <param name="configureDbCommand">The action of configuring the ADO.NET command.</param>
            <returns>Returns the number of affected rows.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="configureDbCommand"/> is null.</exception>
            <example>
              The following example shows how to execute an ADO.NET command that returns no result.
              <code>
                using System;
                using Centido.Core;
            
                class ExecuteNonQuerySample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                    
                        //Adding a new table
                        var table = domain.AddTable("my_table");
                    
                        //Granting all necessary permissions
                        table.GrantAll();
            
                        //Inserting two rows
                        table.InsertRow();
                        table.InsertRow();
                    
                        //Deleting inserted rows
                        var rowCount = domain.DbAccess.ExecuteNonQuery(cmd =&gt;
                        {
                            cmd.CommandText = string.Format("delete from {0}",
                            table.FullName);
                        });
                        
                        Console.WriteLine("Affected row count = {0}", rowCount);
                    }
                }
              </code>
            </example>
        </member>
        <member name="P:Centido.Core.DbAccess.DbProviderFactory">
            <summary>
              Gets a database provider factory for the target database provider invariant name.
            </summary>
            <value>An instance of the <see cref="T:System.Data.Common.DbProviderFactory"/> class.</value>
            <exception cref="T:System.ArgumentException">Thrown when there is no database provider with the specified invariant name.</exception>
        </member>
        <member name="P:Centido.Core.DbAccess.DbConnection">
            <summary>
              Gets an instance of the <see cref="T:System.Data.Common.DbConnection"/> class
              used to connect to the database.
            </summary>
            <value>An instance of the <see cref="T:System.Data.Common.DbConnection"/> class.</value>
        </member>
        <member name="T:Centido.Core.DbRule">
            <summary>
              The database rules.
            </summary>
        </member>
        <member name="F:Centido.Core.DbRule.ErrorCodeMarker">
            <summary>
              The marker of the code in error messages.
            </summary>
        </member>
        <member name="F:Centido.Core.DbRule.IdentifierMaxLength">
            <summary>
              The maximum length of identifiers.
            </summary>
            <remarks>
              The actual value of the maximum length of identifiers constant
              is set because of Oracle limitations.
            </remarks>
        </member>
        <member name="F:Centido.Core.DbRule._keywords">
            <summary>
              Cached keywords.
            </summary>
        </member>
        <member name="M:Centido.Core.DbRule.IsKeyword(System.String)">
            <summary>
              Checks that the specified value is a keyword.
            </summary>
            <param name="value">The specified value.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="value"/> is null.</exception>
            <returns>Returns true if the specified value is a keyword.</returns>
        </member>
        <member name="M:Centido.Core.DbRule.TestIdentifier(System.String)">
            <summary>
              Checks the value is a valid indentifier
            </summary>
            <param name = "value">The value</param>
        </member>
        <member name="M:Centido.Core.DbRule.GetErrorCode(System.Exception)">
            <summary>
              Gets the code of the specified exception.
            </summary>
            <param name="exception">The database exception.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="exception"/> is null.</exception>
            <returns>Returns the error code of the specified exception.</returns>
        </member>
        <member name="M:Centido.Core.DbRule.GetErrorCode(System.String)">
            <summary>
              Gets the code of the specified exception message.
            </summary>
            <param name="errorMessage">The database exception message.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="errorMessage"/> is null.</exception>
            <returns>Returns the error code of the specified exception.</returns>
        </member>
        <member name="P:Centido.Core.DbRule.Keywords">
            <summary>
              Gets the database keywords.
            </summary>
        </member>
        <member name="P:Centido.Core.DbRule.AllowedSpecialSymbols">
            <summary>
              Gets the allowed special symbols.
            </summary>
        </member>
        <member name="T:Centido.Core.DbOperationException">
            <summary>
              The exception that is generated when a database operation failed.
            </summary>
        </member>
        <member name="M:Centido.Core.DbOperationException.#ctor">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.DbOperationException"/> class.
            </summary>
        </member>
        <member name="M:Centido.Core.DbOperationException.#ctor(System.String)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.DbOperationException"/>
              class with a specified error message.
            </summary>
            <param name="message">The message that describes the error.</param>
        </member>
        <member name="M:Centido.Core.DbOperationException.#ctor(System.String,System.Exception)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.DbOperationException"/> class with a specified error message and a reference to the inner exception that is the cause of this exception.
            </summary>
            <param name="message">The error message that explains the reason for the exception.</param>
            <param name="innerException">The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified.</param>
        </member>
        <member name="M:Centido.Core.DbOperationException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.DbOperationException"/>
              class with serialized data.
            </summary>
            <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> that holds the serialized object data about the exception being thrown. </param>
            <param name="context">The <see cref="T:System.Runtime.Serialization.StreamingContext"/> that contains contextual information about the source or destination.</param>
        </member>
        <member name="T:Centido.Core.Dto.BoolColumnDto">
            <summary>
              A data transfering object for a boolean table column.
            </summary>
        </member>
        <member name="T:Centido.Core.Dto.ColumnDto">
            <summary>
              A data transfer object for a table column.
            </summary>
        </member>
        <member name="T:Centido.Core.Dto.DataTransferObject">
            <summary>
              A data transfer object.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.DataTransferObject.XmlSchemaVersionTag">
            <summary>
              The name of the tag stores the version of the object xml schema.
            </summary>
        </member>
        <member name="M:Centido.Core.Dto.DataTransferObject.GetSchema">
            <summary>
              This method is reserved and should not be used. When implementing the IXmlSerializable interface, you should return null (Nothing in Visual Basic) from this method, and instead, if specifying a custom schema is required, apply the <see cref="T:System.Xml.Serialization.XmlSchemaProviderAttribute"/> to the class.
            </summary>
            <returns>
              An <see cref="T:System.Xml.Schema.XmlSchema"/> that describes the XML representation of the object that is produced by the <see cref="M:System.Xml.Serialization.IXmlSerializable.WriteXml(System.Xml.XmlWriter)"/> method and consumed by the <see cref="M:System.Xml.Serialization.IXmlSerializable.ReadXml(System.Xml.XmlReader)"/> method.
            </returns>
        </member>
        <member name="M:Centido.Core.Dto.DataTransferObject.ReadXml(System.Xml.XmlReader)">
            <summary>
              Generates an object from its XML representation.
            </summary>
            <param name="reader">The <see cref="T:System.Xml.XmlReader"/> stream from which the object is deserialized. 
            </param>
        </member>
        <member name="M:Centido.Core.Dto.DataTransferObject.WriteXml(System.Xml.XmlWriter)">
            <summary>
              Converts an object into its XML representation.
            </summary>
            <param name="writer">The <see cref="T:System.Xml.XmlWriter"/> stream to which the object is serialized. 
            </param>
        </member>
        <member name="M:Centido.Core.Dto.DataTransferObject.ReadStringAttribute(System.Xml.XmlReader,System.String,System.Boolean)">
            <summary>
              Reads a string value inside the specified xml attribute.
            </summary>
            <param name="reader">The xml reader.</param>
            <param name="attributeName">The name of the attribute.</param>
            <param name="isRequired">True if the attribute is required; otherwise, false.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="reader"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="attributeName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="attributeName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the attribute is required and it was not found.</exception>
            <returns>Returns the string value inside the specified attribute.</returns>
        </member>
        <member name="M:Centido.Core.Dto.DataTransferObject.ReadGuidAttribute(System.Xml.XmlReader,System.String,System.Boolean)">
            <summary>
              Reads a guid value inside the specified xml attribute.
            </summary>
            <param name="reader">The xml reader.</param>
            <param name="attributeName">The name of the attribute.</param>
            <param name="isRequired">True if the attribute is required; otherwise, false.</param>
            <returns>>Returns the guid value inside the specified attribute.</returns>
        </member>
        <member name="M:Centido.Core.Dto.DataTransferObject.ReadIntAttribute(System.Xml.XmlReader,System.String,System.Boolean)">
            <summary>
              Reads an integer value inside the specified xml attribute.
            </summary>
            <param name="reader">The xml reader.</param>
            <param name="attributeName">The name of the attribute.</param>
            <param name="isRequired">True if the attribute is required; otherwise, false.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="reader"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="attributeName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="attributeName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the attribute is required and it was not found.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the attribute value is not an integer value.</exception>
            <returns>Returns the integer value inside the specified attribute.</returns>
        </member>
        <member name="M:Centido.Core.Dto.DataTransferObject.ReadSmallIntAttribute(System.Xml.XmlReader,System.String,System.Boolean)">
            <summary>
              Reads a small integer value inside the specified xml attribute.
            </summary>
            <param name="reader">The xml reader.</param>
            <param name="attributeName">The name of the attribute.</param>
            <param name="isRequired">True if the attribute is required; otherwise, false.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="reader"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="attributeName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="attributeName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the attribute is required and it was not found.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the attribute value is not a small integer value.</exception>
            <returns>Returns the integer value inside the specified attribute.</returns>
        </member>
        <member name="M:Centido.Core.Dto.DataTransferObject.ReadBigIntAttribute(System.Xml.XmlReader,System.String,System.Boolean)">
            <summary>
              Reads an big integer value inside the specified xml attribute.
            </summary>
            <param name="reader">The xml reader.</param>
            <param name="attributeName">The name of the attribute.</param>
            <param name="isRequired">True if the attribute is required; otherwise, false.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="reader"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="attributeName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="attributeName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the attribute is required and it was not found.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the attribute value is not an integer value.</exception>
            <returns>Returns the integer value inside the specified attribute.</returns>
        </member>
        <member name="M:Centido.Core.Dto.DataTransferObject.ReadDecimalAttribute(System.Xml.XmlReader,System.String,System.Boolean)">
            <summary>
              Reads an decimal value inside the specified xml attribute.
            </summary>
            <param name="reader">The xml reader.</param>
            <param name="attributeName">The name of the attribute.</param>
            <param name="isRequired">True if the attribute is required; otherwise, false.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="reader"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="attributeName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="attributeName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the attribute is required and it was not found.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the attribute value is not a decimal value.</exception>
            <returns>Returns the decimal value inside the specified attribute.</returns>
        </member>
        <member name="M:Centido.Core.Dto.DataTransferObject.ReadBoolAttribute(System.Xml.XmlReader,System.String,System.Boolean)">
            <summary>
              Reads an boolean value inside the specified xml attribute.
            </summary>
            <param name="reader">The xml reader.</param>
            <param name="attributeName">The name of the attribute.</param>
            <param name="isRequired">True if the attribute is required; otherwise, false.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="reader"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="attributeName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="attributeName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the attribute is required and it was not found.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the attribute value is not an boolean value.</exception>
            <returns>Returns the boolean value inside the specified attribute.</returns>
        </member>
        <member name="M:Centido.Core.Dto.DataTransferObject.ReadDateTimeAttribute(System.Xml.XmlReader,System.String,System.Boolean)">
            <summary>
              Reads an datetime value inside the specified xml attribute.
            </summary>
            <param name="reader">The xml reader.</param>
            <param name="attributeName">The name of the attribute.</param>
            <param name="isRequired">True if the attribute is required; otherwise, false.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="reader"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="attributeName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="attributeName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the attribute is required and it was not found.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the attribute value is not an datetime value.</exception>
            <returns>Returns the datetime value inside the specified attribute.</returns>
        </member>
        <member name="M:Centido.Core.Dto.DataTransferObject.ReadTimeSpanAttribute(System.Xml.XmlReader,System.String,System.Boolean)">
            <summary>
              Reads an timespan value inside the specified xml attribute.
            </summary>
            <param name="reader">The xml reader.</param>
            <param name="attributeName">The name of the attribute.</param>
            <param name="isRequired">True if the attribute is required; otherwise, false.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="reader"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="attributeName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="attributeName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the attribute is required and it was not found.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the attribute value is not an timespan value.</exception>
            <returns>Returns the timespan value inside the specified attribute.</returns>
        </member>
        <member name="M:Centido.Core.Dto.DataTransferObject.ReadEnumAttribute(System.Xml.XmlReader,System.String,System.Type,System.Boolean)">
            <summary>
              Reads an enumaration value inside the specified xml attribute.
            </summary>
            <param name="reader">The xml reader.</param>
            <param name="attributeName">The name of the attribute.</param>
            <param name="enumType">The enumeration type.</param>
            <param name="isRequired">True if the attribute is required; otherwise, false.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="reader"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="attributeName"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="enumType"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="attributeName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the attribute is required and it was not found.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the attribute value is not an integer value.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the attribute value does not belong to the enumeration.</exception>
            <returns>Returns the timespan base enumeration value inside the specified attribute.</returns>
        </member>
        <member name="F:Centido.Core.Dto.ColumnDto.IdTag">
            <summary>
              The name of the xml tag that is used to store a column id.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.ColumnDto.NameTag">
            <summary>
              The name of the xml tag that is used to store a column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.ColumnDto.DisplayNameTag">
            <summary>
              The name of the xml tag that is used to store a column display name.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.ColumnDto.DescriptionTag">
            <summary>
              The name of the xml tag that is used to store a column description.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.ColumnDto.OrderIndexTag">
            <summary>
              The name of the xml tag that is used to store a column order index.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.ColumnDto.IsNotNullTag">
            <summary>
              The name of the xml tag that is used to store a column nullability.
            </summary>
        </member>
        <member name="M:Centido.Core.Dto.ColumnDto.IsColumnTag(System.String)">
            <summary>
              Checks that the specified string value is an xml tag for one of the table column types.
            </summary>
            <param name="xmlTag">The specified string value.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="xmlTag"/> is null.</exception>
            <returns>Returns true if the specified string is an xml tag for one of the table column types.</returns>
        </member>
        <member name="M:Centido.Core.Dto.ColumnDto.CreateNew(System.String)">
            <summary>
              Creates a new data transfer object for the specified column type.
            </summary>
            <param name="xmlTag">The xml tag for the new column data transfer object
            that specifies the column type.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="xmlTag"/> is null.</exception>
            <returns>Returns the new data transfer object for the specified column type.</returns>
        </member>
        <member name="P:Centido.Core.Dto.ColumnDto.Id">
            <summary>
              Gets or sets the id of the column.
            </summary>
        </member>
        <member name="P:Centido.Core.Dto.ColumnDto.Name">
            <summary>
              Gets or sets the name of the column.
            </summary>
        </member>
        <member name="P:Centido.Core.Dto.ColumnDto.DisplayName">
            <summary>
              Gets or sets the display name of the column.
            </summary>
        </member>
        <member name="P:Centido.Core.Dto.ColumnDto.Description">
            <summary>
              Gets or sets the description of the column.
            </summary>
        </member>
        <member name="P:Centido.Core.Dto.ColumnDto.OrderIndex">
            <summary>
              Gets or sets the order index of the column.
            </summary>
        </member>
        <member name="P:Centido.Core.Dto.ColumnDto.IsNotNull">
            <summary>
              Gets or sets the nullability of the column.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.BoolColumnDto.XmlTag">
            <summary>
              The name of the xml tag that is used to store this object.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.BoolColumnDto.CurrentXmlSchemaVersion">
            <summary>
              The current xml schema version.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.BoolColumnDto.DefaultValueTag">
            <summary>
              The name of the xml tag that is used to store the column default value.
            </summary>
        </member>
        <member name="M:Centido.Core.Dto.BoolColumnDto.GetSchema">
            <summary>
              This method is reserved and should not be used. When implementing the IXmlSerializable interface, you should return null (Nothing in Visual Basic) from this method, and instead, if specifying a custom schema is required, apply the <see cref="T:System.Xml.Serialization.XmlSchemaProviderAttribute"/> to the class.
            </summary>
            <returns>
            An <see cref="T:System.Xml.Schema.XmlSchema"/> that describes the XML representation of the object that is produced by the <see cref="M:System.Xml.Serialization.IXmlSerializable.WriteXml(System.Xml.XmlWriter)"/> method and consumed by the <see cref="M:System.Xml.Serialization.IXmlSerializable.ReadXml(System.Xml.XmlReader)"/> method.
            </returns>
        </member>
        <member name="M:Centido.Core.Dto.BoolColumnDto.ReadXml(System.Xml.XmlReader)">
            <summary>
              Generates an object from its XML representation.
            </summary>
            <param name="reader">The <see cref="T:System.Xml.XmlReader"/> stream from which the object is deserialized. 
            </param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="reader"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.BoolColumnDto.WriteXml(System.Xml.XmlWriter)">
            <summary>
              Converts an object into its XML representation.
            </summary>
            <param name="writer">The <see cref="T:System.Xml.XmlWriter"/> stream to which the object is serialized. 
            </param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="writer"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.BoolColumnDto.CopyTo(Centido.Core.BoolColumn)">
            <summary>
              Copies the properties of the data transfer object to the
            specified boolean column.
            </summary>
            <param name="boolColumn">The big integer column.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="boolColumn"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.BoolColumnDto.CreateFrom(Centido.Core.BoolColumn)">
            <summary>
              Creates a data transfer object for the specified boolean column.
            </summary>
            <param name="boolColumn">The specified boolean column.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="boolColumn"/> is null.</exception>
            <returns>Returns the data transfer object for the specified boolean column.</returns>
        </member>
        <member name="P:Centido.Core.Dto.BoolColumnDto.DefaultValue">
            <summary>
              Gets or sets the default value of the column.
            </summary>
        </member>
        <member name="T:Centido.Core.TableParameters">
            <summary>
              The auxiliary parameters used when creating a user-defined table.
            </summary>
            <remarks>This class is used when specifying the auxiliary table creation parameters
            such as system column ids, the need for default table indexes etc.</remarks>
            <example>
              The following example shows how to create a table without default indexes.
            <code>
                using System;
                using Centido.Core;
            
                class DomainSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
            
                        domain.DeleteAll();
                    
                        //Creating a table without default indexes
                        var table = domain.AddTable("my_table",
                            new TableParameters() { DefaultIndexes = false });
            
                        Console.WriteLine("Table index count = {0}", table.Indexes.Count());
            
                        //Inserting two rows with the same id
                        var rowId = Guid.NewGuid();
            
                        table.GrantAll();
                        table.InsertRow(rowId);
                        table.InsertRow(rowId);
            
                        //Reading the inserted rows
                        domain.DbAccess.ExecuteReader(cmd =>
                        {
                            cmd.CommandText = string.Format("select id from {0}", table.FullName); 
                        }, reader =>
                        {
                            Console.WriteLine("Row id = {0}", reader.GetGuid("id"));
                        });
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.TableParameters.#ctor">
            <summary>
             Initializes a new instance of the <see cref="T:Centido.Core.TableParameters"/> class.
            </summary>
        </member>
        <member name="P:Centido.Core.TableParameters.IdColumnId">
            <summary>
              Gets or sets the id of the table column that stores the row id.
            </summary>
        </member>
        <member name="P:Centido.Core.TableParameters.OwnerColumnId">
            <summary>
             Gets or sets the id of the table column that stores the row owner. 
            </summary>
        </member>
        <member name="P:Centido.Core.TableParameters.CreatedByColumnId">
            <summary>
              Gets or sets the id of the table column that stores the name of the user who has created the row.
            </summary>
        </member>
        <member name="P:Centido.Core.TableParameters.CreatedOnColumnId">
            <summary>
              Gets or sets the id of the table column that stores the row creation date and time.
            </summary>
        </member>
        <member name="P:Centido.Core.TableParameters.UpdatedByColumnId">
            <summary>
              Gets or sets the id of the table column that stores the name of the user who has updated the row last.
            </summary>
        </member>
        <member name="P:Centido.Core.TableParameters.UpdatedOnColumnId">
            <summary>
              Gets or sets the id of the table column that stores the row last update date and time.
            </summary>
        </member>
        <member name="P:Centido.Core.TableParameters.DeletedByColumnId">
            <summary>
              Gets or sets the id of the table column that stores the name of the user who has deleted the row.
            </summary>
        </member>
        <member name="P:Centido.Core.TableParameters.DeletedOnColumnId">
            <summary>
              Gets or sets the id of the table column that stores the row deletion date and time.
            </summary>
        </member>
        <member name="P:Centido.Core.TableParameters.IsActiveColumnId">
            <summary>
              Gets or sets the id of the table column that stores the information about the row activity.
            </summary>
        </member>
        <member name="P:Centido.Core.TableParameters.RowVersionColumnId">
            <summary>
              Gets or sets the id of the table column that stores the row version.
            </summary>
        </member>
        <member name="P:Centido.Core.TableParameters.DefaultIndexes">
            <summary>
              Gets or sets the need to create default table indexes.
            </summary>
            <value>True if there is a need to create default table indexes; otherwise, false.</value>
        </member>
        <member name="P:Centido.Core.TableParameters.IdColumnIndexId">
            <summary>
              Gets or sets the id of the default table index on the row id column.
            </summary>
        </member>
        <member name="P:Centido.Core.TableParameters.IsActiveIndexId">
            <summary>
              Gets or sets the id of the default index on the IsActive column.
            </summary>
        </member>
        <member name="T:Centido.Core.Configuration.CoreConfigurationSection">
            <summary>
              Application settings section containing data access parameters
            </summary>
        </member>
        <member name="F:Centido.Core.Configuration.CoreConfigurationSection.DefaultSectionName">
            <summary>
              Default section name
            </summary>
        </member>
        <member name="P:Centido.Core.Configuration.CoreConfigurationSection.Domains">
            <summary>
              Collection of domain parameters
            </summary>
        </member>
        <member name="T:Centido.Core.BinaryColumn">
            <summary>
              A binary table column.
            </summary>
            <remarks>A binary column can store byte array values.
            If a value is inserted using the current API then
            it is inserted by chunks of 4000 bytes. This process
            can be quite slow if using an SQL Server database.</remarks>
            <example>
              The following example shows how to create a binary column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
            
                        //Creating a binary column
                        var column = table.AddColumn("my_column", ColumnType.Binary)
                            as BinaryColumn;
            
                        //Inserting a binary value
                        var id = table.InsertRow(column.Value(new byte[]{0, 1, 2, 3}));
            
                        Console.Write("Inserted value = ");
            
                        foreach(var b in column.Read(id).GetBinary())
                            Console.Write("{0} ", b);
            
                        Console.WriteLine();
                    }
                }
            </code>
            </example>
        </member>
        <member name="F:Centido.Core.BinaryColumn.StandardChunkSize">
            <summary>
              The chunk size used when writing to a binary column.
            </summary>
            <value>The chunk size in bytes.</value>
        </member>
        <member name="F:Centido.Core.BinaryColumn.SqlServerChunkSize">
            <summary>
              The chunk size used when writing to an SQL Server binary column.
            </summary>
            <value>The chunk size in bytes.</value>
        </member>
        <member name="F:Centido.Core.BinaryColumn._chunkSize">
            <summary>
              The chunk size used when writing to the column.
            </summary>
        </member>
        <member name="M:Centido.Core.BinaryColumn.#ctor(System.Guid,Centido.Core.Table)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.BinaryColumn"/> class
              for the specified column id and parent table.
            </summary>
            <param name="columnId">The column id.</param>
            <param name="table">The parent table.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.BinaryColumn.#ctor(System.Guid,Centido.Core.Table,System.String,System.String,System.String,System.Boolean,System.Int32,System.Int32)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.BinaryColumn"/> class
              for the specified column id, name, display name,
            description, nullability, order index, customization level and parent table.
            </summary>
            <param name="columnId">The column id.</param>
            <param name="table">The parent table.</param>
            <param name="columnName">The column name.</param>
            <param name="displayName">The column display name.</param>
            <param name="description">The column description.</param>
            <param name="isNotNull">The column ability to hold null values.</param>
            <param name="orderIndex">The column order index.</param>
            <param name="customizationlevel">The column customization level.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
        </member>
        <member name="M:Centido.Core.BinaryColumn.Append(System.Guid,System.Collections.Generic.ICollection{System.Byte})">
            <summary>
              Appends to the data in the column of the row with the specified id.
            </summary>
            <remarks>
            <para>The binary value is appended by chunks of 4000 bytes. This process
            can be quite slow if using an SQL Server database.</para>
            <para>The current user has to have the update permission on the
            table in order to execute this function.</para>
            </remarks>
            <param name="rowId">The id of the specified row.</param>
            <param name="data">The binary data.</param>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user
            has no permission to execute this function.</exception>
            <example>
              The following example shows how to append data to a binary column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
            
                        //Creating a binary column
                        var column = table.AddColumn("my_column", ColumnType.Binary)
                            as BinaryColumn;
            
                        //Inserting a binary value
                        var id = table.InsertRow(column.Value(new byte[]{0, 1, 2, 3}));
            
                        //Reading the inserted value
                        Console.Write("Inserted value = ");
            
                        foreach(var b in column.Read(id).GetBinary())
                            Console.Write("{0} ", b);
            
                        Console.WriteLine();
            
                        //Appending a binary value
                        column.Append(id, new byte[]{3, 2, 1, 0});
            
                        //Reading the updated value
                        Console.Write("Updated value = ");
            
                        foreach(var b in column.Read(id).GetBinary())
                            Console.Write("{0} ", b);
            
                        Console.WriteLine();
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.BinaryColumn.Update(System.Guid,System.Nullable{System.Guid},System.Object)">
            <summary>
              Updates data of the column in the row with the specified id.
            </summary>
            <remarks>
            <para>The value is updated by chunks of 4000 bytes. This process
            can be quite slow if using an SQL Server database.</para>
            <para>The current user has to have the update permission on the table in order
            to execute this function.</para>
            </remarks>
            <param name="rowId">The id of the specified row.</param>
            <param name="expectedRowVersion">The expected row version.</param>
            <param name="value">The binary data.</param>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission
            to execute this function.</exception>
            <returns>Returns true if a row with the specified id was found; otherwise, false.</returns>
            <example>
              The following example shows how to update data of a binary column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
            
                        //Creating a binary column
                        var column = table.AddColumn("my_column", ColumnType.Binary)
                            as BinaryColumn;
            
                        //Inserting a binary value
                        var id = table.InsertRow(column.Value(new byte[]{0, 1, 2, 3}));
            
                        //Reading the inserted value
                        Console.Write("Inserted value = ");
            
                        foreach(var b in column.Read(id).GetBinary())
                            Console.Write("{0} ", b);
            
                        Console.WriteLine();
            
                        //Updating the binary value
                        column.Update(id, new byte[]{3, 2, 1, 0});
            
                        //Reading the updated value
                        Console.Write("Updated value = ");
            
                        foreach(var b in column.Read(id).GetBinary())
                            Console.Write("{0} ", b);
            
                        Console.WriteLine();
                    }
                }   
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.BinaryColumn.AppendImplementation(System.Guid,System.Collections.Generic.ICollection{System.Byte})">
            <summary>
              Appends binary data to a column value in the row with the specified id.
            </summary>
            <param name = "rowId">The id of the specified row.</param>
            <param name = "data">The binary data.</param>
        </member>
        <member name="M:Centido.Core.BinaryColumn.Add(Centido.Core.Table,System.String)">
            <summary>
              Adds a new binary column with the specified name to the specified table.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to execute this function.</remarks>
            <param name="table">The table.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is a column with the same name in the same user-defined table.</exception>
            <returns>Returns the newly created binary table column.</returns>
            <example>
              The following example shows how to add a binary column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a binary table column
                        var column = BinaryColumn.Add(table, "my_column");
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.BinaryColumn.Add(Centido.Core.Table,System.Guid,System.String)">
            <summary>
              Adds a new binary table column with the specified id and name to the specified table.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to execute this function.</remarks>
            <param name="table">The table.</param>
            <param name="columnId">The column id.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is a column with the same id or the same name in the same user-defined table.</exception>
            <returns>Returns the newly created binary table column.</returns>
            <example>
              The following example shows how to create a binary table column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a binary table column
                        var column = BinaryColumn.Add(table, Guid.NewGuid(), "my_column");
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.BinaryColumn.Ensure(Centido.Core.Table,System.String)">
            <summary>
              Ensures that the table contains a binary column with the specified name.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to execute this function.</remarks>
            <param name="table">The table.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to add a column and
            the current user has no permission to change the schema.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the 
            specified name but different column type.</exception>
            <returns>Returns a binary table column with the specified name.</returns>
            <example>
              The following example shows how to ensure that a table has a binary column with the specified name.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a binary table column
                        table.AddColumn("first_column", ColumnType.Binary);
            
                        //Ensuring the first column
                        BinaryColumn.Ensure(table, "first_column");
                        //Ensuring the second column
                        BinaryColumn.Ensure(table, "second_column");
            
                        foreach(var column in table.Columns)
                            Console.WriteLine("Table column: name = {0}, type = {1}", column.Name, column.ColumnType);
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.BinaryColumn.Ensure(Centido.Core.Table,System.Guid,System.String)">
            <summary>
              Ensures that the table contains a binary column with the specified id and the specified name.
            </summary>
            <param name="table">The table.</param>
            <param name="columnId">The column id.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to add a column and
            the current user has no permission to change the schema.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the
            specified id but different column name.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the 
            specified id but different column type.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the specified name
            but different column id.</exception>
            <returns>Returns the table column with the specified id, the specified name and the specified type.</returns>
            <returns>Returns the table column with the specified id, the specified name and the specified type.</returns>
            <example>
              The following example shows how to ensure a binary column with the specified id and
            the specified name.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a table column
                        var columnId = Guid.NewGuid();
                        table.AddColumn(columnId, "first_column", ColumnType.Binary);
            
                        //Ensuring the first column
                        BinaryColumn.Ensure(table, columnId, "first_column");
                        //Ensuring the second column
                        BinaryColumn.Ensure(table, Guid.NewGuid(), "second_column");
            
                        foreach(var column in table.Columns)
                            Console.WriteLine("Table column: name = {0}, type = {1}", column.Name, column.ColumnType);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.BinaryColumn.ChunkSize">
            <summary>
              The chunk size used when writing to the column.
            </summary>
            <value>The chunk size in bytes.</value>
        </member>
        <member name="P:Centido.Core.BinaryColumn.ColumnType">
            <summary>
              Gets the column type.
            </summary>
        </member>
        <member name="P:Centido.Core.BinaryColumn.ValueOdbcType">
            <summary>
              Gets the column value database type.
            </summary>
        </member>
        <member name="P:Centido.Core.BinaryColumn.BackEndTableName">
            <summary>
              Gets the backend column table name.
            </summary>
        </member>
        <member name="T:Centido.Core.EnumMember">
            <summary>
              An enumeration member.
            </summary>
            <remarks>An enumeration member stores information about
            an allowed enumeration value such as its display name.</remarks>
            <example>
              The following example shows how to use enumeration members.
            <code>
                using System;
                using System.Data.Common;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Adding a new table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
                        
                        //Creating an enumeration column
                        var column = table.AddColumn("enum_column", ColumnType.Enumeration)
                            as EnumColumn;
            
                        //Creating enumeration members
                        column.AddMember(1).DisplayName = "The first member";
                        column.AddMember(2).DisplayName = "The second member";
            
                        //Making the second member to be default
                        column.DefaultValue = 2;
            
                        //Inserting two rows
                        var firstRowId = table.InsertRow();
                        var secondRowId = table.InsertRow(column.Value(1));
            
                        Console.WriteLine("The first row: value = {0}", column.Read(firstRowId).GetInteger());
                        Console.WriteLine("The second row: value = {0}", column.Read(secondRowId).GetInteger());
            
                        //Trying to insert a wrong value
                        try
                        {
                            table.InsertRow(column.Value(3));
                        }
                        catch(DbException)
                        {
                            Console.WriteLine("Inserting invalid enumeration values is not allowed");
                        }
            
                        //Changing the member value
                        Console.WriteLine("Changing the first member value");
            
                        column.GetMember(1).Value = 3;
            
                        Console.WriteLine("The first row: value = {0}", column.Read(firstRowId).GetInteger());
                        Console.WriteLine("The second row: value = {0}", column.Read(secondRowId).GetInteger());
                    }
                }
            </code>
            </example>
        </member>
        <member name="F:Centido.Core.EnumMember._column">
            <summary>
              The parent column.
            </summary>
        </member>
        <member name="F:Centido.Core.EnumMember._value">
            <summary>
              The value of the enumeration member.
            </summary>
        </member>
        <member name="M:Centido.Core.EnumMember.#ctor(Centido.Core.EnumColumn,System.Int32)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.EnumMember"/> class
              for the specified column and value.
            </summary>
            <param name="column">The parent enumeration column.</param>
            <param name="value">The value of the member.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="column"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.EnumMember.Delete">
            <summary>
              Deletes the enumeration member.
            </summary>
            <remarks>
            <para>The current user has to have the permission in order to execute this function.</para>
            <para>Deleting of an enumeration member results in setting the column to null
            for those rows that contain the value of the deleted member.</para>
            </remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is no enumeration member with such value.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there are rows that contain the value of the specified enumeration member and the column is set to be not nullable.</exception>
            <example>
              The following example shows how to delete an enumeration member.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Adding a new table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();            
            
                        //Creating an enumeration column
                        var column = table.AddColumn("enum_column", ColumnType.Enumeration)
                            as EnumColumn;
                        
                        //Adding some enumeration members
                        var firstMember = column.AddMember(1);
                        column.AddMember(2);
                        column.AddMember(3);
            
                        //Inserting two rows
                        var firstRowId = table.InsertRow(column.Value(1));
                        var secondRowId = table.InsertRow(column.Value(2));
                        var thirdRowId = table.InsertRow(column.Value(3));
            
                        //Deleting the first member
                        firstMember.Delete();
            
                        //Enumerating the enumeration members
                        foreach(var m in column.Members)
                            Console.WriteLine("Enumeration member: value = {0}", m.Value);
            
                        //Checking the row values
                        Console.WriteLine("First row: value = {0}", column.Read(firstRowId).GetInteger());
                        Console.WriteLine("Second row: value = {0}", column.Read(secondRowId).GetInteger());
                        Console.WriteLine("Third row: value = {0}", column.Read(thirdRowId).GetInteger());
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.EnumMember.Exists">
            <summary>
              Checks the existence of the enumeration member.
            </summary>
            <returns>Returns true if the enumeration member still exists; otherwise, returns false.</returns>
        </member>
        <member name="M:Centido.Core.EnumMember.ReadProperty(System.String)">
            <summary>
              Reads an enumeration member property value.
            </summary>
            <param name = "propertyName">The property name.</param>
            <returns>Returns the property value.</returns>
        </member>
        <member name="M:Centido.Core.EnumMember.WriteProperty(System.String,System.Object,System.Data.OdbcType)">
            <summary>
              Updates an enumeration member property.
            </summary>
            <param name = "propertyName">The property name.</param>
            <param name = "propertyValue">The property new value.</param>
            <param name = "propertyType">The property database type.</param>
        </member>
        <member name="P:Centido.Core.EnumMember.Domain">
            <summary>
              Gets the parent domain.
            </summary>
        </member>
        <member name="P:Centido.Core.EnumMember.Column">
            <summary>
              Gets the parent enumeration column.
            </summary>
        </member>
        <member name="P:Centido.Core.EnumMember.Value">
            <summary>
              Gets or sets the value of the enumeration member.
            </summary>
            <remarks>
            <para>Setting enumeration member value to a new one results in changing that
            value in the rows that contain the old one. If the old value was
            a default one for the column then the default value is also changed
            to a new one.</para>
            <para>The current user has to have the permission to change the schema in order to set this property.</para>
            </remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to set the property.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when setting the property and there is already an enumeration member with the same value.</exception>
            <example>
              The following example shows how to change the value of an enumeration member.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Adding a new table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();            
            
                        //Creating an enumeration column
                        var column = table.AddColumn("enum_column", ColumnType.Enumeration)
                            as EnumColumn;
                        
                        //Adding some enumeration members
                        column.AddMember(1);
                        column.AddMember(2);
            
                        //Setting the default value
                        column.DefaultValue = 1;
            
                        //Inserting some rows
                        var firstRowId = table.InsertRow();
                        var secondRowId = table.InsertRow(column.Value(2));
            
                        //Showing the inserted values
                        Console.WriteLine("The first row: value = {0}", column.Read(firstRowId).GetInteger());
                        Console.WriteLine("The second row: value = {0}", column.Read(secondRowId).GetInteger());
            
                        Console.WriteLine("Default value = {0}", column.DefaultValue);
            
                        //Changing the first member value
                        Console.WriteLine("Changing the first member value");
            
                        column.GetMember(1).Value = 3;
            
                        //Showing the inserted values
                        Console.WriteLine("The first row: value = {0}", column.Read(firstRowId).GetInteger());
                        Console.WriteLine("The second row: value = {0}", column.Read(secondRowId).GetInteger());
            
                        Console.WriteLine("Default value = {0}", column.DefaultValue);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.EnumMember.DisplayName">
            <summary>
              Gets or sets the display name of the enumeration member.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to set this property.</remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to set this property.</exception>
            <example>
              The following example shows how to set the display name of enumeration members.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Adding a new table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();            
            
                        //Creating an enumeration column
                        var column = table.AddColumn("enum_column", ColumnType.Enumeration)
                            as EnumColumn;
                        
                        //Adding some enumeration members
                        column.AddMember(1).DisplayName = "The first member";
                        column.AddMember(2).DisplayName = "The second member";
                        column.AddMember(3).DisplayName = "The third member";
            
                        //Enumerating the enumeration members
                        foreach(var m in column.Members)
                            Console.WriteLine("Enumeration member: value = {0}, display name = {1}",
                                m.Value, m.DisplayName);
                    }
                }   
            </code>
            </example>
        </member>
        <member name="T:Centido.Core.SchemaUpdater">
            <summary>
              A metadata schema updater.
            </summary>
        </member>
        <member name="M:Centido.Core.SchemaUpdater.Update(System.String,System.String)">
            <summary>
              Updates the metadata schema.
            </summary>
            <param name = "dbConnectionString">The database connection string.</param>
            <param name = "dbProvider">The database provider name.</param>
        </member>
        <member name="P:Centido.Core.SchemaUpdater.ProductName">
            <summary>
              Gets the database management system product name.
            </summary>
        </member>
        <member name="P:Centido.Core.SchemaUpdater.FromVersion">
            <summary>
              Gets the initial metadata schema version.
            </summary>
        </member>
        <member name="P:Centido.Core.SchemaUpdater.ToVersion">
            <summary>
              Gets the target metadata schema version.
            </summary>
        </member>
        <member name="T:Centido.Core.TableFullAccessRight">
            <summary>
              Security table full access right
            </summary>
        </member>
        <member name="T:Centido.Core.ITableAccessRight">
            <summary>
              Represents a security access right.
            </summary>
        </member>
        <member name="P:Centido.Core.ITableAccessRight.User">
            <summary>
              Gets the user that has an access right.
            </summary>
        </member>
        <member name="P:Centido.Core.ITableAccessRight.Table">
            <summary>
              Gets the table.
            </summary>
        </member>
        <member name="P:Centido.Core.ITableAccessRight.DataAction">
            <summary>
              Gets the granted data action.
            </summary>
        </member>
        <member name="F:Centido.Core.TableFullAccessRight._dataAction">
            <summary>
              Access type
            </summary>
        </member>
        <member name="F:Centido.Core.TableFullAccessRight._table">
            <summary>
              Table
            </summary>
        </member>
        <member name="F:Centido.Core.TableFullAccessRight._user">
            <summary>
              User
            </summary>
        </member>
        <member name="M:Centido.Core.TableFullAccessRight.#ctor(Centido.Core.Table,Centido.Core.User,Centido.Core.DataAction)">
            <summary>
              Public constructor
            </summary>
            <param name = "table">Table</param>
            <param name = "user">User</param>
            <param name = "dataAction">Access type</param>
        </member>
        <member name="P:Centido.Core.TableFullAccessRight.Table">
            <summary>
              Table
            </summary>
        </member>
        <member name="P:Centido.Core.TableFullAccessRight.User">
            <summary>
              User that has access
            </summary>
        </member>
        <member name="P:Centido.Core.TableFullAccessRight.DataAction">
            <summary>
              Access type
            </summary>
        </member>
        <member name="T:Centido.Core.Dto.RefTargetDto">
            <summary>
              A data transfering object for a reference column target.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.RefTargetDto.XmlTag">
            <summary>
              The name of the xml tag that is used to store this object.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.RefTargetDto.CurrentXmlSchemaVersion">
            <summary>
              The current xml schema version.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.RefTargetDto.CascadeDeleteTag">
            <summary>
              The name of the xml tag that is used to store the need for cascade delete.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.RefTargetDto.RefTableIdTag">
            <summary>
              The name of the xml tag that is used to store the referenced table id.
            </summary>
        </member>
        <member name="M:Centido.Core.Dto.RefTargetDto.GetSchema">
            <summary>
              This method is reserved and should not be used. When implementing the IXmlSerializable interface, you should return null (Nothing in Visual Basic) from this method, and instead, if specifying a custom schema is required, apply the <see cref="T:System.Xml.Serialization.XmlSchemaProviderAttribute"/> to the class.
            </summary>
            <returns>
              An <see cref="T:System.Xml.Schema.XmlSchema"/> that describes the XML representation of the object that is produced by the <see cref="M:System.Xml.Serialization.IXmlSerializable.WriteXml(System.Xml.XmlWriter)"/> method and consumed by the <see cref="M:System.Xml.Serialization.IXmlSerializable.ReadXml(System.Xml.XmlReader)"/> method.
            </returns>
        </member>
        <member name="M:Centido.Core.Dto.RefTargetDto.ReadXml(System.Xml.XmlReader)">
            <summary>
              Generates an object from its XML representation.
            </summary>
            <param name="reader">The <see cref="T:System.Xml.XmlReader"/> stream from which the object is deserialized. 
            </param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="reader"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.RefTargetDto.WriteXml(System.Xml.XmlWriter)">
            <summary>
              Converts an object into its XML representation.
            </summary>
            <param name="writer">The <see cref="T:System.Xml.XmlWriter"/> stream to which the object is serialized. 
            </param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="writer"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.RefTargetDto.CopyTo(Centido.Core.RefTarget)">
            <summary>
              Copies the properties of the data transfer object to the
            specified reference target.
            </summary>
            <param name="refTarget">The reference target.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="refTarget"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.RefTargetDto.CreateFrom(Centido.Core.RefTarget)">
            <summary>
              Creates a data transfer object for the specified reference target.
            </summary>
            <param name="refTarget">The specified reference target.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="refTarget"/> is null.</exception>
            <returns>Returns the data transfer object for the specified reference target.</returns>
        </member>
        <member name="P:Centido.Core.Dto.RefTargetDto.CascadeDelete">
            <summary>
              Gets or sets the need for cascade delete.
            </summary>
        </member>
        <member name="P:Centido.Core.Dto.RefTargetDto.RefTableId">
            <summary>
              Gets or sets the referenced table id.
            </summary>
        </member>
        <member name="T:Centido.Core.Dto.StringColumnDto">
            <summary>
              A data transfering object for a string table column.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.StringColumnDto.XmlTag">
            <summary>
              The name of the xml tag that is used to store this object.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.StringColumnDto.CurrentXmlSchemaVersion">
            <summary>
              The current xml schema version.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.StringColumnDto.DefaultValueTag">
            <summary>
              The name of the xml tag that is used to store the column default value.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.StringColumnDto.IsNotEmptyTag">
            <summary>
              The name of the xml tag that is used to store the column emptiness.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.StringColumnDto.MaxLengthTag">
            <summary>
              The name of the xml tag that is used to store the column maximum length.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.StringColumnDto.RegularExpressionTag">
            <summary>
              The name of the xml tag that is used to store the column regular expression.
            </summary>
        </member>
        <member name="M:Centido.Core.Dto.StringColumnDto.GetSchema">
            <summary>
              This method is reserved and should not be used. When implementing the IXmlSerializable interface, you should return null (Nothing in Visual Basic) from this method, and instead, if specifying a custom schema is required, apply the <see cref="T:System.Xml.Serialization.XmlSchemaProviderAttribute"/> to the class.
            </summary>
            <returns>
              An <see cref="T:System.Xml.Schema.XmlSchema"/> that describes the XML representation of the object that is produced by the <see cref="M:System.Xml.Serialization.IXmlSerializable.WriteXml(System.Xml.XmlWriter)"/> method and consumed by the <see cref="M:System.Xml.Serialization.IXmlSerializable.ReadXml(System.Xml.XmlReader)"/> method.
            </returns>
        </member>
        <member name="M:Centido.Core.Dto.StringColumnDto.ReadXml(System.Xml.XmlReader)">
            <summary>
              Generates an object from its XML representation.
            </summary>
            <param name="reader">The <see cref="T:System.Xml.XmlReader"/> stream from which the object is deserialized. 
            </param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="reader"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.StringColumnDto.WriteXml(System.Xml.XmlWriter)">
            <summary>
              Converts an object into its XML representation.
            </summary>
            <param name="writer">The <see cref="T:System.Xml.XmlWriter"/> stream to which the object is serialized. 
            </param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="writer"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.StringColumnDto.CopyTo(Centido.Core.StringColumn)">
            <summary>
              Copies the properties of the data transfer object to the
            specified string column.
            </summary>
            <param name="stringColumn">The string column.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="stringColumn"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.StringColumnDto.CreateFrom(Centido.Core.StringColumn)">
            <summary>
              Creates a data transfer object for the specified string column.
            </summary>
            <param name="stringColumn">The specified string column.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="stringColumn"/> is null.</exception>
            <returns>Returns the data transfer object for the specified string column.</returns>
        </member>
        <member name="P:Centido.Core.Dto.StringColumnDto.DefaultValue">
            <summary>
              Gets or sets the column default value.
            </summary>
        </member>
        <member name="P:Centido.Core.Dto.StringColumnDto.IsNotEmpty">
            <summary>
              Gets or sets the column emptiness.
            </summary>
        </member>
        <member name="P:Centido.Core.Dto.StringColumnDto.MaxLength">
            <summary>
              Gets or sets the column maximum length.
            </summary>
        </member>
        <member name="P:Centido.Core.Dto.StringColumnDto.RegularExpression">
            <summary>
              Gets or sets the column regular expression.
            </summary>
        </member>
        <member name="T:Centido.Core.IntColumn">
            <summary>
              An integer table column.
            </summary>
            <remarks>An integer table column can store values ranging from -2147483648 to 2147483647.</remarks>
            <example>
              The following example shows how to use an integer column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
            
                        //Creating an integer column
                        var column = table.AddColumn("my_column", ColumnType.Integer)
                            as IntColumn;
            
                        //Setting the column bounds
                        column.Maximum = 10;
                        column.Minimum = 0;
            
                        //Setting the default value
                        column.DefaultValue = 1;
            
                        //Inserting a new row
                        var id = table.InsertRow();
            
                        Console.WriteLine("The inserted value = {0}", column.Read(id).GetInteger());
                    }
                }
            </code>
            </example>
        </member>
        <member name="F:Centido.Core.IntColumn._defaultValue">
            <summary>
              The default value of the column.
            </summary>
        </member>
        <member name="F:Centido.Core.IntColumn._minimum">
            <summary>
              The minimum value of the column.
            </summary>
        </member>
        <member name="F:Centido.Core.IntColumn._maximum">
            <summary>
              The maximum value of the column.
            </summary>
        </member>
        <member name="M:Centido.Core.IntColumn.#ctor(System.Guid,Centido.Core.Table)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.IntColumn"/> class
              for the specified column id and parent table.
            </summary>
            <param name="columnId">The column id.</param>
            <param name="table">The parent table.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.IntColumn.#ctor(System.Guid,Centido.Core.Table,System.String,System.String,System.String,System.Boolean,System.Int32,System.Int32)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.IntColumn"/> class
              for the specified column id, name, display name,
            description, nullability, order index, customization level and parent table.
            </summary>
            <param name="columnId">The column id.</param>
            <param name="table">The parent table.</param>
            <param name="columnName">The column name.</param>
            <param name="displayName">The column display name.</param>
            <param name="description">The column description.</param>
            <param name="isNotNull">The column ability to hold null values.</param>
            <param name="orderIndex">The column order index.</param>
            <param name="customizationlevel">The column customization level.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
        </member>
        <member name="M:Centido.Core.IntColumn.Refresh">
            <summary>
              Refreshes the properties of the column.
            </summary>
        </member>
        <member name="M:Centido.Core.IntColumn.Add(Centido.Core.Table,System.String)">
            <summary>
              Adds a new integer column with the specified name to the specified table.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to execute this function.</remarks>
            <param name="table">The table.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is a column with the same name in the same user-defined table.</exception>
            <returns>Returns the newly created integer table column.</returns>
            <example>
              The following example shows how to add a integer column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a integer table column
                        var column = IntColumn.Add(table, "my_column");
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.IntColumn.Add(Centido.Core.Table,System.Guid,System.String)">
            <summary>
              Adds a new integer table column with the specified id and name to the specified table.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to execute this function.</remarks>
            <param name="table">The table.</param>
            <param name="columnId">The column id.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is a column with the same id or the same name in the same user-defined table.</exception>
            <returns>Returns the newly created integer table column.</returns>
            <example>
              The following example shows how to create a integer table column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a integer table column
                        var column = IntColumn.Add(table, Guid.NewGuid(), "my_column");
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.IntColumn.Ensure(Centido.Core.Table,System.String)">
            <summary>
              Ensures that the table contains a integer column with the specified name.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to execute this function.</remarks>
            <param name="table">The table.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to add a column and
            the current user has no permission to change the schema.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the 
            specified name but different column type.</exception>
            <returns>Returns a integer table column with the specified name.</returns>
            <example>
              The following example shows how to ensure that a table has a integer column with the specified name.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a integer table column
                        table.AddColumn("first_column", ColumnType.Integer);
            
                        //Ensuring the first column
                        IntColumn.Ensure(table, "first_column");
                        //Ensuring the second column
                        IntColumn.Ensure(table, "second_column");
            
                        foreach(var column in table.Columns)
                            Console.WriteLine("Table column: name = {0}, type = {1}", column.Name, column.ColumnType);
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.IntColumn.Ensure(Centido.Core.Table,System.Guid,System.String)">
            <summary>
              Ensures that the table contains a integer column with the specified id and the specified name.
            </summary>
            <param name="table">The table.</param>
            <param name="columnId">The column id.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to add a column and
            the current user has no permission to change the schema.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the
            specified id but different column name.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the 
            specified id but different column type.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the specified name
            but different column id.</exception>
            <returns>Returns the table column with the specified id, the specified name and the specified type.</returns>
            <returns>Returns the table column with the specified id, the specified name and the specified type.</returns>
            <example>
              The following example shows how to ensure a integer column with the specified id and
            the specified name.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a table column
                        var columnId = Guid.NewGuid();
                        table.AddColumn(columnId, "first_column", ColumnType.Integer);
            
                        //Ensuring the first column
                        IntColumn.Ensure(table, columnId, "first_column");
                        //Ensuring the second column
                        IntColumn.Ensure(table, Guid.NewGuid(), "second_column");
            
                        foreach(var column in table.Columns)
                            Console.WriteLine("Table column: name = {0}, type = {1}", column.Name, column.ColumnType);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.IntColumn.ColumnType">
            <summary>
              Gets the column type.
            </summary>
        </member>
        <member name="P:Centido.Core.IntColumn.ValueOdbcType">
            <summary>
              Gets the column value database type.
            </summary>
        </member>
        <member name="P:Centido.Core.IntColumn.BackEndTableName">
            <summary>
              Gets the column backend table name.
            </summary>
        </member>
        <member name="P:Centido.Core.IntColumn.Maximum">
            <summary>
              Gets or sets the maximum value of the column.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to set this property.</remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to set this property.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to set this property to true and there are rows that contain invalid values.</exception>
            <example>
              The following example shows how to set the maximum value of an integer column.
            <code>
                using System;
                using System.Data.Common;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
            
                        //Creating an integer column
                        var column = table.AddColumn("my_column", ColumnType.Integer)
                            as IntColumn;
            
                        //Setting the column maximum
                        column.Maximum = 1;
            
                        //Trying to insert an invalid value
                        try
                        {
                            table.InsertRow(column.Value(2));
                        }
                        catch(DbException)
                        {
                            Console.WriteLine("Inserting values greater than the maximum is forbidden");
                        }
            
                        Console.WriteLine("Table: row count = {0}", table.RowCount);
            
                        //Inserting a valid value
                        table.InsertRow(column.Value(0));
            
                        Console.WriteLine("Table: row count = {0}", table.RowCount);
                    }
                }   
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.IntColumn.Minimum">
            <summary>
              Gets or sets the minimum value of the column.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to set this property.</remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to set this property.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to set this property to true and there are rows that contain invalid values.</exception>
            <example>
              The following example shows how to set the minimum value of an integer column.
            <code>
                using System;
                using System.Data.Common;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
            
                        //Creating an integer column
                        var column = table.AddColumn("my_column", ColumnType.Integer)
                            as IntColumn;
            
                        //Setting the column minimum
                        column.Minimum = 1;
            
                        //Trying to insert an invalid value
                        try
                        {
                            table.InsertRow(column.Value(0));
                        }
                        catch(DbException)
                        {
                            Console.WriteLine("Inserting values less than the minimum is forbidden");
                        }
            
                        Console.WriteLine("Table: row count = {0}", table.RowCount);
            
                        //Inserting a valid value
                        table.InsertRow(column.Value(2));
            
                        Console.WriteLine("Table: row count = {0}", table.RowCount);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.IntColumn.DefaultValue">
            <summary>
              Gets or sets the default value of the column.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to set this property.</remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to set this property.</exception>
            <example>
              The following example shows how to set the default value of an integer column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
            
                        //Creating an integer column
                        var column = table.AddColumn("my_column", ColumnType.Integer)
                            as IntColumn;
            
                        //Setting the column default value
                        column.DefaultValue = 1;
            
                        //Inserting a row
                        var id = table.InsertRow();
            
                        Console.WriteLine("Inserted value = {0}", column.Read(id).GetInteger());
                    }
                }
            </code>
            </example>
        </member>
        <member name="T:Centido.Core.OracleInstaller">
            <summary>
              An Oracle metadata installer.
            </summary>
            <remarks>System.Data.OracleClient ADO.NET provider cannot be used
            to connect with elevated privileges (as DBA).</remarks>
        </member>
        <member name="T:Centido.Core.Installer">
            <summary>
              A generic metadata installer.
            </summary>
        </member>
        <member name="F:Centido.Core.Installer._dbConnectionString">
            <summary>
            The database connection string.
            </summary>
        </member>
        <member name="F:Centido.Core.Installer._dbProviderName">
            <summary>
            The database provider name.
            </summary>
        </member>
        <member name="M:Centido.Core.Installer.#ctor">
            <summary>
              Initializes a new instance of the class <see cref="T:Centido.Core.Installer"/> class.
            </summary>
        </member>
        <member name="M:Centido.Core.Installer.#ctor(System.String,System.String)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.Installer"/> class.
            </summary>
            <param name="dbConnectionString">The connection string.</param>
            <param name="dbProviderName">The database provider invariant name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="dbConnectionString"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="dbProviderName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="dbConnectionString"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="dbProviderName"/> is an empty string.</exception>
        </member>
        <member name="M:Centido.Core.Installer.InstallSchema">
            <summary>
              Installs the metadata schema.
            </summary>
            <returns>Returns the current installer.</returns>
        </member>
        <member name="M:Centido.Core.Installer.InstallLogic">
            <summary>
              Installs the metadata logic.
            </summary>
            <returns>Returns the current installer.</returns>
        </member>
        <member name="M:Centido.Core.Installer.CreateAppUser(System.String,System.String,System.String)">
            <summary>
              Creates an application user.
            </summary>
            <param name = "userName">The application user name.</param>
            <param name="userPassword">The application user password.</param>
            <param name="dbName">The application user database name.</param>
            <returns>Returns the current installer.</returns>
        </member>
        <member name="M:Centido.Core.Installer.DropUser(System.String,System.String)">
            <summary>
              Drops the specified database user.
            </summary>
            <param name="userName">The user name.</param>
            <param name="dbName">The application database name.</param>
            <returns>Returns the current installer.</returns>
        </member>
        <member name="M:Centido.Core.Installer.GetPrincipals">
            <summary>
              Gets the list of database principal names.
            </summary>
            <returns>Returns the list of database principal names.</returns>
        </member>
        <member name="M:Centido.Core.Installer.Install">
            <summary>
              Installs the metadata.
            </summary>
            <returns>Returns the current installer.</returns>
        </member>
        <member name="M:Centido.Core.Installer.Uninstall">
            <summary>
              Uninstalls the metadata.
            </summary>
            <returns>Returns the current installer.</returns>
        </member>
        <member name="P:Centido.Core.Installer.DbConnectionString">
            <summary>
            Gets the connection string.
            </summary>
        </member>
        <member name="P:Centido.Core.Installer.DbProviderName">
            <summary>
            Gets the database provider invariant name.
            </summary>
        </member>
        <member name="P:Centido.Core.Installer.ProductName">
            <summary>
              Gets the database product name.
            </summary>
        </member>
        <member name="P:Centido.Core.Installer.SchemaVersion">
            <summary>
              Gets the version of the metadata schema.
            </summary>
        </member>
        <member name="P:Centido.Core.Installer.LogicVersion">
            <summary>
              Gets the version of the metadata logic.
            </summary>
        </member>
        <member name="F:Centido.Core.OracleInstaller.DefaultTablespaceName">
            <summary>
              Gets the default tablespace name.
            </summary>
        </member>
        <member name="M:Centido.Core.OracleInstaller.#ctor">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.OracleInstaller"/> class.
            </summary>
        </member>
        <member name="M:Centido.Core.OracleInstaller.#ctor(System.String,System.String)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.OracleInstaller"/> class.
            </summary>
            <param name="dbConnectionString">The connection string.</param>
            <param name="dbProviderName">The database provider invariant name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="dbConnectionString"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="dbProviderName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="dbConnectionString"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="dbProviderName"/> is an empty string.</exception>        
        </member>
        <member name="M:Centido.Core.OracleInstaller.InstallSchema">
            <summary>
              Installs the metadata schema.
            </summary>
            <returns>Returns the current installer.</returns>
        </member>
        <member name="M:Centido.Core.OracleInstaller.InstallLogic">
            <summary>
              Installs the metadata logic.
            </summary>
            <returns>Returns the current installer.</returns>
        </member>
        <member name="M:Centido.Core.OracleInstaller.CreateAppUser(System.String,System.String)">
            <summary>
              Creates an application user with the specified name and password.
            </summary>
            <param name="userName">The application user name.</param>
            <param name="userPassword">The application user password</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="userName"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="userPassword"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="userPassword"/> is an empty string.</exception>
            <returns>Returns the current installer.</returns>
        </member>
        <member name="M:Centido.Core.OracleInstaller.CreateAppUser(System.String,System.String,System.String)">
            <summary>
              Creates an application user with the specified name and password.
            </summary>
            <remarks>The parameter that specifies the application database name can be
            omitted because the metadata is always installed in the application user schema.</remarks>
            <param name="userName">The application user name.</param>
            <param name="userPassword">The application user password</param>
            <param name="dbName">The application user database name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="userName"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="userPassword"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="dbName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="userPassword"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="userName"/> is not a valid identifier.</exception>
            <returns>Returns the current installer.</returns>
        </member>
        <member name="M:Centido.Core.OracleInstaller.DropUser(System.String)">
            <summary>
              Drops the specified database user.
            </summary>
            <param name="userName">The user name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="userName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="userName"/> is an empty string.</exception>
            <returns>Returns the current installer.</returns>
        </member>
        <member name="M:Centido.Core.OracleInstaller.DropUser(System.String,System.String)">
            <summary>
              Drops the specified database user.
            </summary>
            <remarks>The parameter that specifies the application database name can be omitted.</remarks>
            <param name="userName">The user name.</param>
            <param name="dbName">The application database name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="userName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="userName"/> is an empty string.</exception>
            <returns>Returns the current installer.</returns>
        </member>
        <member name="M:Centido.Core.OracleInstaller.GetPrincipals">
            <summary>
              Gets the list of database principal names.
            </summary>
            <returns>Returns the list of database principal names.</returns>
        </member>
        <member name="M:Centido.Core.OracleInstaller.Uninstall">
            <summary>
               Uninstalls the metadata.
            </summary>
        </member>
        <member name="M:Centido.Core.OracleInstaller.ExecuteScript(System.String)">
            <summary>
              Executes an sql script.
            </summary>
            <param name = "sqlScript">The text of the sql script.</param>
        </member>
        <member name="P:Centido.Core.OracleInstaller.ProductName">
            <summary>
              Gets the database product name.
            </summary>
        </member>
        <member name="P:Centido.Core.OracleInstaller.SchemaVersion">
            <summary>
              Gets the version of the metadata schema.
            </summary>
        </member>
        <member name="P:Centido.Core.OracleInstaller.LogicVersion">
            <summary>
              Gets the version of the metadata logic.
            </summary>
        </member>
        <member name="T:Centido.Core.SystemColumns">
            <summary>
              A container of the table system columns.
            </summary>
            <remarks>Although the system columns can be found in the Columns
            collection, but this container provides a direct way to access a certain system column.</remarks>
            <example>
              The following example shows how to get the system columns via the Columns property.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll(); 
                        
                        //Adding a new table
                        var table = domain.AddTable("my_table");
            
                        //Enumerating all system columns
                        foreach(var systemColumn in table.Columns.Where(c => c.IsSystem))
                            Console.WriteLine("System column: name = {0}, type = {1}", systemColumn.Name, systemColumn.ColumnType); 
                    }
                }   
            </code>
            </example>
        </member>
        <member name="F:Centido.Core.SystemColumns._table">
            <summary>
              Parent table
            </summary>
        </member>
        <member name="F:Centido.Core.SystemColumns._idColumn">
            <summary>
            The id column.
            </summary>
        </member>
        <member name="F:Centido.Core.SystemColumns._ownerColumn">
            <summary>
            The owner column
            </summary>
        </member>
        <member name="F:Centido.Core.SystemColumns._createdByColumn">
            <summary>
            The CreatedBy column.
            </summary>
        </member>
        <member name="F:Centido.Core.SystemColumns._createdOnColumn">
            <summary>
            The CreatedOn column.
            </summary>
        </member>
        <member name="F:Centido.Core.SystemColumns._updatedByColumn">
            <summary>
            The UpdatedBy column.
            </summary>
        </member>
        <member name="F:Centido.Core.SystemColumns._updatedOnColumn">
            <summary>
            The UpdatedOn column.
            </summary>
        </member>
        <member name="F:Centido.Core.SystemColumns._deletedByColumn">
            <summary>
            The DeletedBy column.
            </summary>
        </member>
        <member name="F:Centido.Core.SystemColumns._deletedOnColumn">
            <summary>
            The DeletedOn column.
            </summary>
        </member>
        <member name="F:Centido.Core.SystemColumns._isActiveColumn">
            <summary>
            The IsActive column.
            </summary>
        </member>
        <member name="F:Centido.Core.SystemColumns._rowVersionColumn">
            <summary>
            The RowVersion column.
            </summary>
        </member>
        <member name="M:Centido.Core.SystemColumns.#ctor(Centido.Core.Table)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.SystemColumns"/> class
            for the specified table.
            </summary>
            <param name="table">The table that contains the system columns.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
        </member>
        <member name="P:Centido.Core.SystemColumns.Id">
            <summary>
              Gets the row id system column.
            </summary>
            <remarks>The primary key of each row in any user-defined table is a unique guid id value.
            If the id value is not specified in an inserted row then this value is auto-generated.
            The value of the id column is a guid value but it is stored in the binary format for
            the interoperability reasons.</remarks>
            <example>
              The following example shows that the row id value is auto-generated by the dbms if it is not specified.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll(); 
                        
                        //Adding a new table
                        var table = domain.AddTable("my_table");
            
                        table.GrantAll();
            
                        //Inserting a new row without specifying the row id
                        domain.DbAccess.ExecuteNonQuery(cmd =>
                        {
                            cmd.CommandText = string.Format("insert into {0}(owner) values({1})",
                                table.FullName,
                                domain.DbAccess.FormatMarker("owner"));
            
                            cmd.Parameters.Add(domain.DbAccess.CreateParameter("owner", OdbcType.NVarChar, "new_owner"));
                        });
            
                        //Reading the id of the new row
                        Guid autoGeneratedId = Guid.Empty;
            
                        domain.DbAccess.ExecuteScalar(cmd =>
                        {
                            cmd.CommandText = string.Format("select id from {0}", table.FullName);
                        }, result => autoGeneratedId = DbValue.GetGuid(result).Value);
            
                        Console.WriteLine("Auto-generated id = {0}", autoGeneratedId);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.SystemColumns.Owner">
            <summary>
              Gets the row owner system column.
            </summary>
            <remarks>Each table row has a column that contains the name of the user that is considered to be its owner.
            If not specified otherwise the owner of an inserted row is set to the name of the current user.
            The owner of the row can also be changed manually.
            This column is the only information that determines what rows can be accessed
            when table permissions are set on the business unit access level.</remarks>
            <example>
              The following example shows how to set the owner of the row and change it afterwards.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll(); 
                        
                        //Adding a new table
                        var table = domain.AddTable("my_table");
            
                        table.GrantAll();
            
                        //Inserting a new row specifying the row owner
                        var rowId = table.InsertRow(table.SystemColumns.Owner.Value("owner_1"));
            
                        //Reading the owner of the new row
                        var insertedOwner = table.SystemColumns.Owner.Read(rowId).GetString();
            
                        Console.WriteLine("After inserting: owner = {0}", insertedOwner);
            
                        //Updating the owner of the row
                        table.SystemColumns.Owner.Update(rowId, "owner_2");
            
                        //Reading the owner of the row
                        var updatedOwner = table.SystemColumns.Owner.Read(rowId).GetString();
            
                        Console.WriteLine("After updating: owner = {0}", updatedOwner);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.SystemColumns.CreatedBy">
            <summary>
              Gets the row CreatedBy system column.
            </summary>
            <remarks>This column stores the name of the user that inserted the row.
            The value of this column cannot be modified.</remarks>
            <example>
              The following example shows that the CreatedBy column is auto-generated and cannot be changed.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll(); 
                        
                        //Adding a new table
                        var table = domain.AddTable("my_table");
            
                        table.GrantAll();
                        
                        //Inserting a new row
                        var rowId = table.InsertRow();
            
                        //Reading the CreatedBy column
                        Console.WriteLine("After inserting: created by = {0}",
                            table.SystemColumns.CreatedBy.Read(rowId).GetString());
            
                        //Trying to modify the CreatedBy column
                        table.SystemColumns.CreatedBy.Update(rowId, DataSource.InternalTable, "new user");
            
                        //Reading the CreatedBy column
                        Console.WriteLine("After updating: created by = {0}",
                            table.SystemColumns.CreatedBy.Read(rowId).GetString());
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.SystemColumns.CreatedOn">
            <summary>
              Gets the row CreatedOn system column.
            </summary>
            <remarks>
            This column stores the date and time of the row insertion.
            The value of this column cannot be modified.
            </remarks>
            <example>
              The following example shows that the CreatedOn column is auto-generated and cannot be changed.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll(); 
                        
                        //Adding a new table
                        var table = domain.AddTable("my_table");
            
                        table.GrantAll();
                        
                        //Inserting a new row
                        var rowId = table.InsertRow();
            
                        //Reading the CreatedOn column
                        Console.WriteLine("After inserting: created on = {0}",
                            table.SystemColumns.CreatedOn.Read(rowId).GetDateTime());
            
                        //Trying to modify the CreatedOn column
                        table.SystemColumns.CreatedOn.Update(rowId, DataSource.InternalTable, DateTime.Now.AddYears(2));
            
                        //Reading the CreatedOn column
                        Console.WriteLine("After updating: created on = {0}",
                            table.SystemColumns.CreatedOn.Read(rowId).GetDateTime());
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.SystemColumns.UpdatedBy">
            <summary>
              Gets the row UpdatedBy system column.
            </summary>
            <remarks>
            This column stores the name of the user that updated the row last.
            The value of the column is modified after each update and cannot be changed manually.
            Initially the UpdatedBy value is set to the name of the user that inserted the row.
            </remarks>
            <example>
              The following example shows that the UpdatedBy column is auto-generated and cannot be changed manually.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll(); 
                        
                        //Adding a new table
                        var table = domain.AddTable("my_table");
            
                        table.GrantAll();
                        
                        //Inserting a new row
                        var rowId = table.InsertRow();
            
                        //Reading the UpdatedBy column
                        Console.WriteLine("After inserting: updated by = {0}",
                            table.SystemColumns.UpdatedBy.Read(rowId).GetString());
            
                        //Trying to modify the UpdatedBy column
                        table.SystemColumns.UpdatedBy.Update(rowId, DataSource.InternalTable, "new_user");
            
                        //Reading the UpdatedBy column
                        Console.WriteLine("After trying to update: updated by = {0}",
                            table.SystemColumns.UpdatedBy.Read(rowId).GetString());
            
                        //Creating a new user
                        var user = domain.AddUser("my_user", "P@ssw0rd");
                        table.GrantAll(user);
            
                        //Logging on as a new user and updating the row
                        var userTable = domain.Logon("my_user", "P@ssw0rd").GetTable(table.Name);
            
                        userTable.UpdateRow(rowId, userTable.SystemColumns.Owner.Value("new_owner"));
            
                        //Reading the UpdatedBy column
                        Console.WriteLine("After updating: updated by = {0}",
                            table.SystemColumns.UpdatedBy.Read(rowId).GetString());
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.SystemColumns.UpdatedOn">
            <summary>
              Gets the row UpdatedOn system column.
            </summary>
            <remarks>
            This column stores the date and time of the last row update.
            The value of the column is modified after each update and cannot be changed manually.
            Initially the UpdatedBy value is set to the date and time of the row insertion.
            </remarks>
            <example>
              The following example shows that the UpdatedBy column is auto-generated and cannot be changed manually.
            <code>
                using System;
                using System.Threading;
                using Centido.Core;     
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll(); 
                        
                        //Adding a new table
                        var table = domain.AddTable("my_table");
            
                        table.GrantAll();
                        
                        //Inserting a new row
                        var rowId = table.InsertRow();
            
                        //Reading the UpdatedOn column
                        Console.WriteLine("After inserting: updated on = {0}",
                            table.SystemColumns.UpdatedOn.Read(rowId).GetDateTime());
            
                        //Trying to modify the UpdatedOn column
                        table.SystemColumns.UpdatedOn.Update(rowId, DataSource.InternalTable, DateTime.Now.AddYears(2));
            
                        //Reading the UpdatedOn column
                        Console.WriteLine("After trying to update: updated on = {0}",
                            table.SystemColumns.UpdatedOn.Read(rowId).GetDateTime());
            
                        //Creating a new user
                        var user = domain.AddUser("my_user", "P@ssw0rd");
                        table.GrantAll(user);
            
                        Thread.Sleep(2000);
            
                        //Logging on as a new user and updating the row
                        var userTable = domain.Logon("my_user", "P@ssw0rd").GetTable(table.Name);
            
                        userTable.UpdateRow(rowId, userTable.SystemColumns.Owner.Value("new_owner"));
            
                        //Reading the UpdatedOn column
                        Console.WriteLine("After updating: updated on = {0}",
                            table.SystemColumns.UpdatedOn.Read(rowId).GetDateTime());
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.SystemColumns.DeletedBy">
            <summary>
              Gets the row DeletedBy system column.
            </summary>
            <remarks>
            This column stores the name of the user that soft deleted the row.
            The value of the DeletedBy is set when the row is soft deleted
            and unset when the row is restored.
            The DeletedBy column is only visible in the internal table
            but not in the user view of that table.
            </remarks>
            <example>
              The following example shows that the DeletedBy value is auto-generated and cannot be changed manually.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll(); 
                        
                        //Adding a new table
                        var table = domain.AddTable("my_table");
            
                        table.GrantAll();
                        
                        //Inserting a new row
                        var rowId = table.InsertRow();
            
                        //Reading the value of the DeletedBy column
                        Console.WriteLine("Before deletion: deleted by = {0}",
                            table.SystemColumns.DeletedBy.Read(rowId, DataSource.InternalTable).GetString() ?? "null");
            
                        //Trying to modify the DeletedBy value
                        table.SystemColumns.DeletedBy.Update(rowId, DataSource.InternalTable, "new_user");
            
                        //Reading the value of the DeletedBy column
                        Console.WriteLine("After trying to update: deleted by = {0}",
                            table.SystemColumns.DeletedBy.Read(rowId, DataSource.InternalTable).GetString() ?? "null");
            
                        //Soft deleting the row
                        table.DeleteRow(rowId);
            
                        //Reading the value of the DeletedBy column
                        Console.WriteLine("After soft deleting: deleted by = {0}",
                            table.SystemColumns.DeletedBy.Read(rowId, DataSource.InternalTable).GetString() ?? "null");
            
                        //Restoring the row
                        table.RestoreRow(rowId);
            
                        //Reading the value of the DeletedBy column
                        Console.WriteLine("After restoring: deleted by = {0}",
                            table.SystemColumns.DeletedBy.Read(rowId, DataSource.InternalTable).GetString() ?? "null");
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.SystemColumns.DeletedOn">
            <summary>
              Gets the row DeletedOn system column.
            </summary>
            <remarks>
              This column stores the date and time when the row was soft deleted.
            The value of the DeletedOn is set when the row is soft deleted
            and unset when the row is restored.
            The DeletedOn column is only visible in the internal table
            but not in the user view of that table.
            </remarks>
            <example>
              The following example shows that the DeletedOn value is auto-generated and cannot be changed manually.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll(); 
                        
                        //Adding a new table
                        var table = domain.AddTable("my_table");
            
                        table.GrantAll();
                        
                        //Inserting a new row
                        var rowId = table.InsertRow();
            
                        //Reading the value of the DeletedOn column
                        Console.WriteLine("Before deletion: deleted on = {0}",
                            table.SystemColumns.DeletedOn.Read(rowId, DataSource.InternalTable).GetDateTime());
            
                        //Trying to modify the DeletedOn value
                        table.SystemColumns.DeletedOn.Update(rowId, DataSource.InternalTable, DateTime.Now);
            
                        //Reading the value of the DeletedOn column
                        Console.WriteLine("After trying to update: deleted on = {0}",
                            table.SystemColumns.DeletedOn.Read(rowId, DataSource.InternalTable).GetDateTime());
            
                        //Soft deleting the row
                        table.DeleteRow(rowId);
            
                        //Reading the value of the DeletedOn column
                        Console.WriteLine("After soft deleting: deleted on = {0}",
                            table.SystemColumns.DeletedOn.Read(rowId, DataSource.InternalTable).GetDateTime());
            
                        //Restoring the row
                        table.RestoreRow(rowId);
            
                        //Reading the value of the DeletedOn column
                        Console.WriteLine("After restoring: deleted on = {0}",
                            table.SystemColumns.DeletedOn.Read(rowId, DataSource.InternalTable).GetDateTime());
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.SystemColumns.IsActive">
            <summary>
              Gets the row IsActive system column.
            </summary>
            <remarks>
            <para>The value of this column determines whether a row is soft deleted or not.
            If the value is 1 then the row is active and is visible both in
            the internal table and in the user view of that table.
            If the value is 0 then the row is soft deleted and is only visible
            in the internal table.
            </para>
            <para>
            Deleting one row may trigger deleting other rows if they have a reference on the row to be deleted
            and that reference has the CascadeDelete property set to true. If one reference in such a chain
            has the CascadeDelete property set to false then the whole transaction is cancelled
            and an exception is thrown. 
            </para>
            </remarks>
            <example>
              The following example shows how to soft delete a row be setting its IsActive column value.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll(); 
                        
                        //Adding two tables
                        var firstTable = domain.AddTable("first_table");
                        var secondTable = domain.AddTable("second_table");
            
                        firstTable.GrantAll();
                        secondTable.GrantAll();
            
                        //Adding a reference
                        var refColumn = firstTable.AddColumn("ref", ColumnType.Reference)
                            as RefColumn;
            
                        refColumn.AddTarget(secondTable).CascadeDelete = true;
            
                        //Inserting two rows
                        var id = secondTable.InsertRow();
                        firstTable.InsertRow(refColumn.Value(id));
            
                        Console.WriteLine("The first table: row count = {0}", firstTable.RowCount);
                        Console.WriteLine("The second table: row count = {0}", secondTable.RowCount);
            
                        //Soft deleting the row in the second table by setting its IsActive column value
                        secondTable.SystemColumns.IsActive.Update(id, DataSource.InternalTable, 0);
            
                        Console.WriteLine("Soft deleting the row in the second table");
            
                        Console.WriteLine("The first table: row count = {0}", firstTable.RowCount);
                        Console.WriteLine("The second table: row count = {0}", secondTable.RowCount);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.SystemColumns.RowVersion">
            <summary>
              Gets the row RowVersion system column.
            </summary>
            <remarks>
              This column contains a random guid value that is auto-regenerated
            after each row insert or update. That value can be used
            for an optimistic concurrency control.
            </remarks>
            <example>
              The following example shows that the RowVersion value is auto-regenerated.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
            
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
                        
                        //Inserting a row
                        var id = table.InsertRow();
            
                        Console.WriteLine("Inserting the row: row version = {0}",
                            table.SystemColumns.RowVersion.Read(id).GetGuid());
            
                        //Updating a row
                        table.SystemColumns.Owner.Update(id, "new_owner");
            
                        Console.WriteLine("Updating the row: row version = {0}",
                            table.SystemColumns.RowVersion.Read(id).GetGuid());
                    }
                }
            </code>
            </example>
        </member>
        <member name="T:Centido.Core.TablePermission">
            <summary>
              Table access permission
            </summary>
        </member>
        <member name="F:Centido.Core.TablePermission._dataAction">
            <summary>
              Access type
            </summary>
        </member>
        <member name="F:Centido.Core.TablePermission._principalName">
            <summary>
              Principal
            </summary>
        </member>
        <member name="F:Centido.Core.TablePermission._table">
            <summary>
              Table
            </summary>
        </member>
        <member name="M:Centido.Core.TablePermission.#ctor(Centido.Core.Table,System.String,Centido.Core.DataAction)">
            <summary>
              Public constructor
            </summary>
            <param name = "table">Table</param>
            <param name = "principalName">Principal name</param>
            <param name = "dataAction">Access type</param>
        </member>
        <member name="M:Centido.Core.TablePermission.Delete">
            <summary>
              Delete this access rights
            </summary>
        </member>
        <member name="M:Centido.Core.TablePermission.Exists">
            <summary>
              Checks the existence of the table permission.
            </summary>
            <returns>Returns true if the table permission still exists; otherwise, returns false.</returns>
        </member>
        <member name="P:Centido.Core.TablePermission.Table">
            <summary>
              Table
            </summary>
        </member>
        <member name="P:Centido.Core.TablePermission.Principal">
            <summary>
              Principal
            </summary>
        </member>
        <member name="P:Centido.Core.TablePermission.Domain">
            <summary>
              Domain
            </summary>
        </member>
        <member name="P:Centido.Core.TablePermission.DataAction">
            <summary>
              Access type
            </summary>
        </member>
        <member name="P:Centido.Core.TablePermission.AccessLevel">
            <summary>
              Access level
            </summary>
        </member>
        <member name="T:Centido.Core.DataAction">
            <summary>
              Types of data entry/edit/retrieval actions.
            </summary>
        </member>
        <member name="F:Centido.Core.DataAction.Select">
            <summary>
              Select
            </summary>
        </member>
        <member name="F:Centido.Core.DataAction.Insert">
            <summary>
              Insert
            </summary>
        </member>
        <member name="F:Centido.Core.DataAction.Update">
            <summary>
              Update
            </summary>
        </member>
        <member name="F:Centido.Core.DataAction.Delete">
            <summary>
              Delete
            </summary>
        </member>
        <member name="T:Centido.Core.Dto.EnumMemberDto">
            <summary>
              A data transfering object for an enumeration member.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.EnumMemberDto.XmlTag">
            <summary>
              The name of the xml tag that is used to store this object.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.EnumMemberDto.CurrentXmlSchemaVersion">
            <summary>
              The current xml schema version.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.EnumMemberDto.ValueTag">
            <summary>
              The name of the xml tag that is used to store an enumeration member value.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.EnumMemberDto.DisplayNameTag">
            <summary>
              The name of the xml tag that is used to store an enumeration member display name.
            </summary>
        </member>
        <member name="M:Centido.Core.Dto.EnumMemberDto.GetSchema">
            <summary>
              This method is reserved and should not be used. When implementing the IXmlSerializable interface, you should return null (Nothing in Visual Basic) from this method, and instead, if specifying a custom schema is required, apply the <see cref="T:System.Xml.Serialization.XmlSchemaProviderAttribute"/> to the class.
            </summary>
            <returns>
              An <see cref="T:System.Xml.Schema.XmlSchema"/> that describes the XML representation of the object that is produced by the <see cref="M:System.Xml.Serialization.IXmlSerializable.WriteXml(System.Xml.XmlWriter)"/> method and consumed by the <see cref="M:System.Xml.Serialization.IXmlSerializable.ReadXml(System.Xml.XmlReader)"/> method.
            </returns>
        </member>
        <member name="M:Centido.Core.Dto.EnumMemberDto.ReadXml(System.Xml.XmlReader)">
            <summary>
              Generates an object from its XML representation.
            </summary>
            <param name="reader">The <see cref="T:System.Xml.XmlReader"/> stream from which the object is deserialized. 
            </param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="reader"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.EnumMemberDto.WriteXml(System.Xml.XmlWriter)">
            <summary>
              Converts an object into its XML representation.
            </summary>
            <param name="writer">The <see cref="T:System.Xml.XmlWriter"/> stream to which the object is serialized. 
            </param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="writer"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.EnumMemberDto.CopyTo(Centido.Core.EnumMember)">
            <summary>
              Copies the properties of the data transfer object to the
            specified enumeration member.
            </summary>
            <param name="enumMember">The enumeration member.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="enumMember"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.EnumMemberDto.CreateFrom(Centido.Core.EnumMember)">
            <summary>
              Creates a data transfer object for the specified enumeration member.
            </summary>
            <param name="enumMember">The specified enumeration member.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="enumMember"/> is null.</exception>
            <returns>Returns the data transfer object for the specified enumeration member.</returns>
        </member>
        <member name="P:Centido.Core.Dto.EnumMemberDto.Value">
            <summary>
              Gets or sets the value of the enumeration member.
            </summary>
        </member>
        <member name="P:Centido.Core.Dto.EnumMemberDto.DisplayName">
            <summary>
              Gets or sets the display name of the enumeration member.
            </summary>
        </member>
        <member name="T:Centido.Core.Dto.TablePermissionDto">
            <summary>
              A data transfering object for a table permission.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.TablePermissionDto.XmlTag">
            <summary>
              The name of the xml tag that is used to store this object.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.TablePermissionDto.CurrentXmlSchemaVersion">
            <summary>
              The current xml schema version.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.TablePermissionDto.PrincipalNameTag">
            <summary>
              The name of the xml tag to store the principal name.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.TablePermissionDto.DataActionTag">
            <summary>
              The name of the xml tag to store the allowed data action.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.TablePermissionDto.AccessLevelTag">
            <summary>
              The name of the xml tag to store the access level.
            </summary>
        </member>
        <member name="M:Centido.Core.Dto.TablePermissionDto.GetSchema">
            <summary>
              This method is reserved and should not be used. When implementing the IXmlSerializable interface, you should return null (Nothing in Visual Basic) from this method, and instead, if specifying a custom schema is required, apply the <see cref="T:System.Xml.Serialization.XmlSchemaProviderAttribute"/> to the class.
            </summary>
            <returns>
              An <see cref="T:System.Xml.Schema.XmlSchema"/> that describes the XML representation of the object that is produced by the <see cref="M:System.Xml.Serialization.IXmlSerializable.WriteXml(System.Xml.XmlWriter)"/> method and consumed by the <see cref="M:System.Xml.Serialization.IXmlSerializable.ReadXml(System.Xml.XmlReader)"/> method.
            </returns>
        </member>
        <member name="M:Centido.Core.Dto.TablePermissionDto.ReadXml(System.Xml.XmlReader)">
            <summary>
              Generates an object from its XML representation.
            </summary>
            <param name="reader">The <see cref="T:System.Xml.XmlReader"/> stream from which the object is deserialized. 
            </param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="reader"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.TablePermissionDto.WriteXml(System.Xml.XmlWriter)">
            <summary>
              Converts an object into its XML representation.
            </summary>
            <param name="writer">The <see cref="T:System.Xml.XmlWriter"/> stream to which the object is serialized. 
            </param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="writer"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.TablePermissionDto.CreateFrom(Centido.Core.TablePermission)">
            <summary>
              Creates a data transfer object for the specified table permission.
            </summary>
            <param name="tablePermission">The specified table permission.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="tablePermission"/> is null.</exception>
            <returns>Returns the data transfer object for the specified table permission.</returns>
        </member>
        <member name="P:Centido.Core.Dto.TablePermissionDto.PrincipalName">
            <summary>
              Gets or sets the principal name.
            </summary>
        </member>
        <member name="P:Centido.Core.Dto.TablePermissionDto.DataAction">
            <summary>
              Gets or sets the allowed data action.
            </summary>
        </member>
        <member name="P:Centido.Core.Dto.TablePermissionDto.AccessLevel">
            <summary>
              Gets or sets the access level.
            </summary>
        </member>
        <member name="T:Centido.Core.User">
            <summary>
              A registered user.
            </summary>
        </member>
        <member name="T:Centido.Core.IUser">
            <summary>
              Represents a user.
            </summary>
        </member>
        <member name="T:Centido.Core.IPrincipal">
            <summary>
              Represents a security principal.
            </summary>
        </member>
        <member name="T:Centido.Core.IIdentifiedByName">
            <summary>
              Represents an object that is identified by id.
            </summary>
        </member>
        <member name="P:Centido.Core.IIdentifiedByName.Name">
            <summary>
            Gets the name of the object.
            </summary>
        </member>
        <member name="P:Centido.Core.IPrincipal.DisplayName">
            <summary>
            Gets the display name of the security principal.
            </summary>
        </member>
        <member name="P:Centido.Core.IUser.CanChangeSchema">
            <summary>
              Gets the user ability to change the schema.
            </summary>
            <value>Returns true if the user can change the schema; otherwise, false.</value>
        </member>
        <member name="P:Centido.Core.IUser.CanChangeSecurity">
            <summary>
              Gets the user ability to change security settings.
            </summary>
            <value>Returns true if the user can change security settings; otherwise, false.</value>
        </member>
        <member name="P:Centido.Core.IUser.Units">
            <summary>
              Gets the business units which the user is enrolled into
            </summary>
        </member>
        <member name="F:Centido.Core.User._domain">
            <summary>
              The current domain.
            </summary>
        </member>
        <member name="F:Centido.Core.User._userName">
            <summary>
              The user name.
            </summary>
        </member>
        <member name="F:Centido.Core.User._displayName">
            <summary>
              The display name of the user.
            </summary>
        </member>
        <member name="F:Centido.Core.User._canLogon">
            <summary>
              The user ability to logon.
            </summary>
        </member>
        <member name="F:Centido.Core.User._canChangeSchema">
            <summary>
              The user ability to change the schema.
            </summary>
        </member>
        <member name="F:Centido.Core.User._canChangeSecurity">
            <summary>
              The user ability to change security settings.
            </summary>
        </member>
        <member name="M:Centido.Core.User.#ctor(System.String,Centido.Core.Domain)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.User"/> class
            for the specified user name and the specified domain.
            </summary>
            <param name="userName">The user name.</param>
            <param name="domain">The current domain.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="userName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="userName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="domain"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.User.Delete">
            <summary>
              Deletes the user.
            </summary>
            <remarks>
            <para>The current user is not allowed to delete itself.</para>
            <para>The current user has to have the permission to change security
            settings in order to execute this function.</para>
            </remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user
            has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current
            user is trying to delete itself.</exception>
            <example>
              The following example shows how to delete a user.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a user
                        var user = domain.AddUser("my_user", "P@ssw0rd");
            
                        //Adding the user to a security role
                        var role = domain.AddRole("my_role");
                        role.AddUser(user);
            
                        //Adding the user to a unit
                        var unit = domain.AddUnit();
                        unit.AddUser(user);
            
                        Console.WriteLine("Role: user count = {0}", role.Users.Count());
                        Console.WriteLine("Unit: user count = {0}", unit.Users.Count());
            
                        Console.WriteLine("Deleting the user");
            
                        user.Delete();
            
                        Console.WriteLine("Role: user count = {0}", role.Users.Count());
                        Console.WriteLine("Unit: user count = {0}", unit.Users.Count());
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.User.Exists">
            <summary>
              Checks the existence of the user.
            </summary>
            <returns>Returns true if the user still exists; otherwise, returns false.</returns>
        </member>
        <member name="M:Centido.Core.User.ChangePassword(System.String)">
            <summary>
              Resets the user password.
            </summary>
            <remarks>The current user has to have the permission to change
            security settings in order to execute this function.</remarks>
            <param name="newPassword">The user new password.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="newPassword"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="newPassword"/> is an empty string.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following example shows how to reset a password of a user.
            <code>
                using System;
                using System.Data.Common;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a user
                        var user = domain.AddUser("my_user", "P@ssw0rd");
            
                        //Connecting as a new user
                        domain.Logon("my_user", "P@ssw0rd");
            
                        Console.WriteLine("Resetting the user password");
            
                        user.ChangePassword("NewP@ssw0rd");
            
                        try
                        {
                            domain.Logon("my_user", "P@ssw0rd");
                        }
                        catch(DbException)
                        {
                            Console.WriteLine("Connecting with the old password is forbidden");
                        }
            
                        domain.Logon("my_user", "NewP@ssw0rd");
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.User.ReadProperty(System.String,System.String)">
            <summary>
              Reads the user property.
            </summary>
            <param name = "propertyName">The property name.</param>
            <param name = "tableName">The target table name.</param>
            <returns>The property value.</returns>
        </member>
        <member name="M:Centido.Core.User.WriteProperty(System.String,System.Object,System.Data.OdbcType)">
            <summary>
              Update the user property.
            </summary>
            <param name = "propertyName">The property name.</param>
            <param name = "propertyValue">The property value.</param>
            <param name = "propertyType">The property database type.</param>
        </member>
        <member name="M:Centido.Core.User.Refresh">
            <summary>
              Refreshes the properties of the user.
            </summary>
        </member>
        <member name="P:Centido.Core.User.Domain">
            <summary>
              Gets the current domain.
            </summary>
        </member>
        <member name="P:Centido.Core.User.DisplayName">
            <summary>
              Gets or sets the user display name.
            </summary>
            <remarks>The current user has to have the permission to change security settings
            in order to set this property.</remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user
            has no permission to set this property.</exception>
            <example>
              The following example shows how to set the display name of a user.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a user
                        var user = domain.AddUser("my_user", "P@ssw0rd");
            
                        user.DisplayName = "The user display name";
            
                        Console.WriteLine("User display name = {0}", user.DisplayName);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.User.CanLogon">
            <summary>
              Gets or sets the user's ability to logon.
            </summary>
            <remarks>
            <para>The current user cannot change the logon ability of itself.</para>
            <para>The current user has to have the permission to change security
            settings in order to execute this function.</para>
            </remarks>
            <value>True if the user can logon; otherwise, false.</value>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user
            has no permission to set this property.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current
            user is trying to change the logon ability of itself.</exception>
            <example>
              The following example shows how to change the user logon ability.
            <code>
                using System;
                using System.Data.Common;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a user
                        var user = domain.AddUser("my_user", "P@ssw0rd");
            
                        //Connecting as a new user
                        domain.Logon("my_user", "P@ssw0rd");
            
                        //Forbidding the user to logon
                        user.CanLogon = false;
            
                        try
                        {
                            domain.Logon("my_user", "P@ssw0rd");
                        }
                        catch(DbException)
                        {
                            Console.WriteLine("The user is not allowed to logon");
                        }
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.User.CanChangeSchema">
            <summary>
              Gets or sets the user's ability to change the schema.
            </summary>
            <remarks>
            <para>Changing the schema means defining the table structure,
            adding table indexes etc.</para>
            <para>The current user has to have the permission to change security
            settings in order to set this property.</para></remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has
            no permission to set this property.</exception>
            <value>True if the user can change the schema; otherwise, false.</value>
            <example>
              The following example shows how to enable the user ability to change the schema.
            <code>
                using System;
                using System.Data.Common;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a user
                        var user = domain.AddUser("my_user", "P@ssw0rd");
            
                        //Connecting as a new user
                        var userDomain = domain.Logon("my_user", "P@ssw0rd");
            
                        //Trying to add a new table
                        try
                        {
                            userDomain.AddTable("my_table");
                        }
                        catch(DbException)
                        {
                            Console.WriteLine("The user has no permission to add a table");
                        }
            
                        Console.WriteLine("Granting the user the permission to change the schema");
            
                        user.CanChangeSchema = true;
            
                        //Creating a new table
                        userDomain.AddTable("my_table");
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.User.CanChangeSecurity">
            <summary>
              Gets or sets the user's ability to change security settings.
            </summary>
            <remarks>
            <para>The current user is not allowed to change this property of itself.</para>
            <para>The current user has to have the permission to change security settings
            in order to set this property.</para>
            </remarks>
            <value>True if the user can change security settings; otherwise, false.</value>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user
            has no permission to set this property.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user
            is trying to change this property of itself.</exception>
            <example>
              The following example shows how to enable the user ability to change security settings.
            <code>
                using System;
                using System.Data.Common;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a user
                        var user = domain.AddUser("my_user", "P@ssw0rd");
            
                        //Connecting as a new user
                        var userDomain = domain.Logon("my_user", "P@ssw0rd");
            
                        //Trying to add a new user
                        try
                        {
                            userDomain.AddUser("my_new_user", "P@ssw0rd");
                        }
                        catch(DbException)
                        {
                            Console.WriteLine("The user has no permission to add a new user");
                        }
            
                        Console.WriteLine("Granting the user the permission to change security settings");
            
                        user.CanChangeSecurity = true;
            
                        //Creating a new user
                        userDomain.AddUser("my_new_user", "P@ssw0rd");
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.User.Units">
            <summary>
              Gets the user business units.
            </summary>
            <example>
              The following example shows how to get the user busines units.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a user
                        var user = domain.AddUser("my_user", "P@ssw0rd");
            
                        //Adding the user to different units
                        var firstUnit = domain.AddUnit();
                        firstUnit.DisplayName = "The first unit";
            
                        var secondUnit = domain.AddUnit();
                        secondUnit.DisplayName = "The second unit";
            
                        var thirdUnit = domain.AddUnit();
                        thirdUnit.DisplayName = "The third unit";
            
                        firstUnit.AddUser(user);
                        secondUnit.AddUser(user);
                        
                        Console.WriteLine("User units:");
            
                        foreach(var u in user.Units)
                            Console.WriteLine("\t{0}", u.DisplayName);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.User.Roles">
            <summary>
              Gets the user roles.
            </summary>
            <remarks>The current user has to have the permission to change
            security settings in order to read this property.</remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission
            to read this property.</exception>
            <example>
              The following example shows how to read the user roles,
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a user
                        var user = domain.AddUser("my_user", "P@ssw0rd");
            
                        //Adding the user to different roles
                        var firstRole = domain.AddRole("first_role");
                        var secondRole = domain.AddRole("second_role");
                        var thirdRole = domain.AddRole("third_role");
            
                        firstRole.AddUser(user);
                        secondRole.AddUser(user);
                        
                        Console.WriteLine("User roles:");
            
                        foreach(var r in user.Roles)
                            Console.WriteLine("\t{0}", r.Name);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.User.TablePermissions">
            <summary>
              Gets the user table permissions.
            </summary>
            <remarks>The current user has to have the permission to change
            security settings in order to execute this function.</remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user
            has no permission to read this property.</exception>
            <example>
              The following example shows how to get the user table permissions.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
            
                        //Creating two tables
                        var firstTable = domain.AddTable("first_table");
                        var secondTable = domain.AddTable("second_table");
                        
                        //Creating a user
                        var user = domain.AddUser("my_user", "P@ssw0rd");
            
                        //Granting table permission to the user
                        firstTable.GrantAll(user);
                        secondTable.Grant(user, DataAction.Select, AccessLevel.Unit);
            
                        Console.WriteLine("User table permissions:");
            
                        foreach(var perm in user.TablePermissions)
                            Console.WriteLine("\tTable = {0}, Principal = {1}, action = {2}, level = {3}",
                                perm.Table.Name, perm.Principal.Name, perm.DataAction, perm.AccessLevel);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.User.TableAccessRights">
            <summary>
              Gets the user table access rights.
            </summary>
            <remarks>The current user has to have the permission to change security settings in
            order to read this property.</remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission
            to read this property.</exception>
            <example>
              The following example shows how to read the user table access rights.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
            
                        //Creating three users
                        var firstUser = domain.AddUser("first_user", "P@ssw0rd");
                        var secondUser = domain.AddUser("second_user", "P@ssw0rd");
                        var thirdUser = domain.AddUser("third_user", "P@ssw0rd");
            
                        //Creating a table
                        var table = domain.AddTable("my_table");
            
                        //Adding the first two users to the same unit
                        var unit = domain.AddUnit();
            
                        unit.AddUser(firstUser);
                        unit.AddUser(secondUser);
            
                        //Granting the first user the permission to select from the table
                        table.Grant(firstUser, DataAction.Select);
            
                        //Granting the first user the permission to update rows of the users from the same unit
                        table.Grant(firstUser, DataAction.Update, AccessLevel.Unit);
            
                        Console.WriteLine("User table access rights:");
            
                        foreach(var r in firstUser.TableAccessRights)
                            if (r is TableFullAccessRight)
                                Console.WriteLine("Full access: Table = {0}, User = {1}, Action = {2}",
                                    r.Table.Name, r.User.Name, r.DataAction);
                            else if (r is TableAccessRight)
                                Console.WriteLine("Partial access: Table = {0}, User = {1}, Owner = {2}, Action = {3}",
                                    r.Table.Name, r.User.Name, (r as TableAccessRight).Owner.Name , r.DataAction);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.User.Name">
            <summary>
              Gets the user name.
            </summary>
        </member>
        <member name="T:Centido.Core.TextColumn">
            <summary>
              A text table column.
            </summary>
            <remarks>A text column can hold values up to 2 Gb.
            Unlike <see cref="T:Centido.Core.StringColumn"/> this column doesn't have the
            default value and cannot be indexed.</remarks>
            <example>
              The following example shows how to use a text column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
            
                        //Creating a text column
                        var column = table.AddColumn("my_column", ColumnType.Text)
                            as TextColumn;
            
                        //Inserting a row
                        var id = table.InsertRow(column.Value("The first value"));
            
                        Console.WriteLine("Text column: value = {0}", column.Read(id).GetString());
            
                        //Appending to the column value
                        column.Append(id, " - The second value");
            
                        Console.WriteLine("Text column: value = {0}", column.Read(id).GetString());
                    }
                }
            </code>
            </example>
        </member>
        <member name="F:Centido.Core.TextColumn.StandardChunkSize">
            <summary>
              The chunk size used when writing to a text column.
            </summary>
            <value>The chunk size in letters.</value>
        </member>
        <member name="F:Centido.Core.TextColumn.SqlServerChunkSize">
            <summary>
              The chunk size used when writing to an SQL Server text column.
            </summary>
            <value>The chunk size in bytes.</value>
        </member>
        <member name="F:Centido.Core.TextColumn._chunkSize">
            <summary>
              The chunk size used when writing to the column.
            </summary>
        </member>
        <member name="M:Centido.Core.TextColumn.#ctor(System.Guid,Centido.Core.Table)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.TextColumn"/> class
              for the specified column id and parent table.
            </summary>
            <param name="columnId">The column id.</param>
            <param name="table">The parent table.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.TextColumn.#ctor(System.Guid,Centido.Core.Table,System.String,System.String,System.String,System.Boolean,System.Int32,System.Int32)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.TextColumn"/> class
              for the specified column id, name, display name,
            description, nullability, order index, customization level and parent table.
            </summary>
            <param name="columnId">The column id.</param>
            <param name="table">The parent table.</param>
            <param name="columnName">The column name.</param>
            <param name="displayName">The column display name.</param>
            <param name="description">The column description.</param>
            <param name="isNotNull">The column ability to hold null values.</param>
            <param name="orderIndex">The column order index.</param>
            <param name="customizationlevel">The column customization level.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
        </member>
        <member name="M:Centido.Core.TextColumn.Append(System.Guid,System.String)">
            <summary>
              Appends data to a text column of a row with the specified id.
            </summary>
            <remarks>The current user has to have select and update permissions on the table
            in order to execute this function.</remarks>
            <param name="rowId">The id of the row.</param>
            <param name="data">The data to be appended.</param>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user
            has no select or update permission on the table.</exception>
            <example>
              The following example shows how to append to a text column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
            
                        //Creating a text column
                        var column = table.AddColumn("my_column", ColumnType.Text)
                            as TextColumn;
            
                        //Inserting a row
                        var id = table.InsertRow();
            
                        //Appending the first time
                        column.Append(id, "The first value");
            
                        Console.WriteLine("Text column: value = {0}", column.Read(id).GetString());
            
                        //Appending the second time
                        column.Append(id, " - The second value");
            
                        Console.WriteLine("Text column: value = {0}", column.Read(id).GetString());
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.TextColumn.Update(System.Guid,System.Nullable{System.Guid},System.Object)">
            <summary>
              Updates column data in a row with the specified id.
            </summary>
            <remarks>
            <para>The value is updated by chunks of 2000 symbols. This process
            can be quite slow if using an SQL Server database.</para>
            <para>The current user has to have the update permission on the table
            in order to execute this method.</para></remarks>
            <param name="rowId">The id of the row.</param>
            <param name="expectedRowVersion">The expected row version.</param>
            <param name="value">The new data.</param>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no update permission
            on the table.</exception>
            <returns>Returns true if a row with the specified id was found; otherwise, false.</returns>
            <example>
              The following example shows how to update a text column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
            
                        //Creating a text column
                        var column = table.AddColumn("my_column", ColumnType.Text)
                            as TextColumn;
            
                        //Inserting a value
                        var id = table.InsertRow(column.Value("Initial value"));
            
                        Console.WriteLine("The inserted value = {0}", column.Read(id).GetString());
            
                        //Updating that value
                        table.UpdateRow(id, DataSource.UserView, column.Value("Updated value"));
            
                        Console.WriteLine("The updated value = {0}", column.Read(id).GetString());
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.TextColumn.AppendImplementation(System.Guid,System.String)">
            <summary>
              Appends data in a text column.
            </summary>
            <param name = "rowId">The row id.</param>
            <param name = "data">The data to be appended.</param>
        </member>
        <member name="M:Centido.Core.TextColumn.Add(Centido.Core.Table,System.String)">
            <summary>
              Adds a new text column with the specified name to the specified table.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to execute this function.</remarks>
            <param name="table">The table.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is a column with the same name in the same user-defined table.</exception>
            <returns>Returns the newly created text table column.</returns>
            <example>
              The following example shows how to add a text column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a text table column
                        var column = TextColumn.Add(table, "my_column");
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.TextColumn.Add(Centido.Core.Table,System.Guid,System.String)">
            <summary>
              Adds a new text table column with the specified id and name to the specified table.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to execute this function.</remarks>
            <param name="table">The table.</param>
            <param name="columnId">The column id.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is a column with the same id or the same name in the same user-defined table.</exception>
            <returns>Returns the newly created text table column.</returns>
            <example>
              The following example shows how to create a text table column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a text table column
                        var column = TextColumn.Add(table, Guid.NewGuid(), "my_column");
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.TextColumn.Ensure(Centido.Core.Table,System.String)">
            <summary>
              Ensures that the table contains a text column with the specified name.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to execute this function.</remarks>
            <param name="table">The table.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to add a column and
            the current user has no permission to change the schema.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the 
            specified name but different column type.</exception>
            <returns>Returns a text table column with the specified name.</returns>
            <example>
              The following example shows how to ensure that a table has a text column with the specified name.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a text table column
                        table.AddColumn("first_column", ColumnType.Text);
            
                        //Ensuring the first column
                        TextColumn.Ensure(table, "first_column");
                        //Ensuring the second column
                        TextColumn.Ensure(table, "second_column");
            
                        foreach(var column in table.Columns)
                            Console.WriteLine("Table column: name = {0}, type = {1}", column.Name, column.ColumnType);
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.TextColumn.Ensure(Centido.Core.Table,System.Guid,System.String)">
            <summary>
              Ensures that the table contains a text column with the specified id and the specified name.
            </summary>
            <param name="table">The table.</param>
            <param name="columnId">The column id.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to add a column and
            the current user has no permission to change the schema.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the
            specified id but different column name.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the 
            specified id but different column type.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the specified name
            but different column id.</exception>
            <returns>Returns the table column with the specified id, the specified name and the specified type.</returns>
            <returns>Returns the table column with the specified id, the specified name and the specified type.</returns>
            <example>
              The following example shows how to ensure a text column with the specified id and
            the specified name.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a table column
                        var columnId = Guid.NewGuid();
                        table.AddColumn(columnId, "first_column", ColumnType.Text);
            
                        //Ensuring the first column
                        TextColumn.Ensure(table, columnId, "first_column");
                        //Ensuring the second column
                        TextColumn.Ensure(table, Guid.NewGuid(), "second_column");
            
                        foreach(var column in table.Columns)
                            Console.WriteLine("Table column: name = {0}, type = {1}", column.Name, column.ColumnType);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.TextColumn.ChunkSize">
            <summary>
              The chunk size used when writing to the column.
            </summary>
            <value>The chunk size in bytes.</value>
        </member>
        <member name="P:Centido.Core.TextColumn.ColumnType">
            <summary>
              Gets the column type.
            </summary>
        </member>
        <member name="P:Centido.Core.TextColumn.ValueOdbcType">
            <summary>
              Gets the column value database type.
            </summary>
        </member>
        <member name="P:Centido.Core.TextColumn.BackEndTableName">
            <summary>
              Gets the column backend table name.
            </summary>
        </member>
        <member name="T:Centido.Core.AccessLevel">
            <summary>
              Data access levels.
            </summary>
        </member>
        <member name="F:Centido.Core.AccessLevel.Own">
            <summary>
              Access to own data only.
            </summary>
        </member>
        <member name="F:Centido.Core.AccessLevel.Unit">
            <summary>
              Access to own and unit data only.
            </summary>
        </member>
        <member name="F:Centido.Core.AccessLevel.ChildUnits">
            <summary>
              Access to own and lower units data only.
            </summary>
        </member>
        <member name="F:Centido.Core.AccessLevel.ParentUnits">
            <summary>
              Access to own and higher units data only.
            </summary>
        </member>
        <member name="F:Centido.Core.AccessLevel.ChildAndParentUnits">
            <summary>
              Access to own, higher and lower units data only.
            </summary>
        </member>
        <member name="F:Centido.Core.AccessLevel.All">
            <summary>
              Access to all data.
            </summary>
        </member>
        <member name="T:Centido.Core.ConnectionStringBuilders">
            <summary>
              A connection string builder container.
            </summary>
        </member>
        <member name="F:Centido.Core.ConnectionStringBuilders.Builders">
            <summary>
              Connection string builders
            </summary>
        </member>
        <member name="M:Centido.Core.ConnectionStringBuilders.GetBuilder(System.String)">
            <summary>
              Get connection string builder
            </summary>
            <param name = "dbProviderName">Db provider name</param>
            <returns>Connection string builder or null</returns>
        </member>
        <member name="T:Centido.Core.Dto.UnitDto">
            <summary>
              A data transfering object for a business unit.
            </summary>
        </member>
        <member name="M:Centido.Core.Dto.UnitDto.GetSchema">
            <summary>
              This method is reserved and should not be used. When implementing the IXmlSerializable interface, you should return null (Nothing in Visual Basic) from this method, and instead, if specifying a custom schema is required, apply the <see cref="T:System.Xml.Serialization.XmlSchemaProviderAttribute"/> to the class.
            </summary>
            <returns>
              An <see cref="T:System.Xml.Schema.XmlSchema"/> that describes the XML representation of the object that is produced by the <see cref="M:System.Xml.Serialization.IXmlSerializable.WriteXml(System.Xml.XmlWriter)"/> method and consumed by the <see cref="M:System.Xml.Serialization.IXmlSerializable.ReadXml(System.Xml.XmlReader)"/> method.
            </returns>
        </member>
        <member name="M:Centido.Core.Dto.UnitDto.ReadXml(System.Xml.XmlReader)">
            <summary>
              Generates an object from its XML representation.
            </summary>
            <param name="reader">The <see cref="T:System.Xml.XmlReader"/> stream from which the object is deserialized. 
            </param>
        </member>
        <member name="M:Centido.Core.Dto.UnitDto.WriteXml(System.Xml.XmlWriter)">
            <summary>
              Converts an object into its XML representation.
            </summary>
            <param name="writer">The <see cref="T:System.Xml.XmlWriter"/> stream to which the object is serialized. 
            </param>
        </member>
        <member name="T:Centido.Core.Dto.GuidColumnDto">
            <summary>
              A data transfering object for a guid table column.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.GuidColumnDto.XmlTag">
            <summary>
              The name of the xml tag that is used to store this object.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.GuidColumnDto.CurrentXmlSchemaVersion">
            <summary>
              The current xml schema version.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.GuidColumnDto.DefaultValueTag">
            <summary>
              The name of the xml tag that is used to store the column default value.
            </summary>
        </member>
        <member name="M:Centido.Core.Dto.GuidColumnDto.GetSchema">
            <summary>
              This method is reserved and should not be used. When implementing the IXmlSerializable interface, you should return null (Nothing in Visual Basic) from this method, and instead, if specifying a custom schema is required, apply the <see cref="T:System.Xml.Serialization.XmlSchemaProviderAttribute"/> to the class.
            </summary>
            <returns>
              An <see cref="T:System.Xml.Schema.XmlSchema"/> that describes the XML representation of the object that is produced by the <see cref="M:System.Xml.Serialization.IXmlSerializable.WriteXml(System.Xml.XmlWriter)"/> method and consumed by the <see cref="M:System.Xml.Serialization.IXmlSerializable.ReadXml(System.Xml.XmlReader)"/> method.
            </returns>
        </member>
        <member name="M:Centido.Core.Dto.GuidColumnDto.ReadXml(System.Xml.XmlReader)">
            <summary>
              Generates an object from its XML representation.
            </summary>
            <param name="reader">The <see cref="T:System.Xml.XmlReader"/> stream from which the object is deserialized. 
            </param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="reader"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.GuidColumnDto.WriteXml(System.Xml.XmlWriter)">
            <summary>
              Converts an object into its XML representation.
            </summary>
            <param name="writer">The <see cref="T:System.Xml.XmlWriter"/> stream to which the object is serialized. 
            </param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="writer"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.GuidColumnDto.CopyTo(Centido.Core.GuidColumn)">
            <summary>
              Copies the properties of the data transfer object to the
            specified guid column.
            </summary>
            <param name="guidColumn">The guid column.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="guidColumn"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.GuidColumnDto.CreateFrom(Centido.Core.GuidColumn)">
            <summary>
              Creates a data transfer object for the specified guid column.
            </summary>
            <param name="guidColumn">The specified guid column.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="guidColumn"/> is null.</exception>
            <returns>Returns the data transfer object for the specified guid column.</returns>
        </member>
        <member name="P:Centido.Core.Dto.GuidColumnDto.DefaultValue">
            <summary>
              Gets or sets the column default value.
            </summary>
        </member>
        <member name="T:Centido.Core.EnumColumn">
            <summary>
              An enumeration table column.
            </summary>
            <remarks>Enumeration column guarantees that it contains
            only those integer values that are defined as enumeration members.
            Each enumeration member can store a display name that can be used
            when building a user interface.
            When an enumeration member is deleted then the column is set to null
            for those rows that contain the value of the member to deleted.
            One of the enumeration members can be set as a default one.</remarks>
            <seealso cref="T:Centido.Core.Column"/>
            <example>
              The following example shows how to use an enumeration column.
            <code>
                using System;
                using System.Data.Common;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Adding a new table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
                        
                        //Creating an enumeration column
                        var column = table.AddColumn("enum_column", ColumnType.Enumeration)
                            as EnumColumn;
            
                        //Creating enumeration members
                        column.AddMember(1).DisplayName = "The first member";
                        column.AddMember(2).DisplayName = "The second member";
            
                        //Making the second member to be default
                        column.DefaultValue = 2;
            
                        //Inserting two rows
                        var firstRowId = table.InsertRow();
                        var secondRowId = table.InsertRow(column.Value(1));
            
                        Console.WriteLine("The first row: value = {0}", column.Read(firstRowId).GetInteger());
                        Console.WriteLine("The second row: value = {0}", column.Read(secondRowId).GetInteger());
            
                        //Trying to insert a wrong value
                        try
                        {
                            table.InsertRow(column.Value(3));
                        }
                        catch(DbException)
                        {
                            Console.WriteLine("Inserting invalid enumeration values is not allowed");
                        }
            
                        //Changing the member value
                        Console.WriteLine("Changing the first member value");
            
                        column.GetMember(1).Value = 3;
            
                        Console.WriteLine("The first row: value = {0}", column.Read(firstRowId).GetInteger());
                        Console.WriteLine("The second row: value = {0}", column.Read(secondRowId).GetInteger());
                    }
                }
            </code>
            </example>
        </member>
        <member name="F:Centido.Core.EnumColumn._defaultValue">
            <summary>
              The default value of the column.
            </summary>
        </member>
        <member name="F:Centido.Core.EnumColumn._valueChecking">
            <summary>
              The availability of the enum value checking.
            </summary>
        </member>
        <member name="M:Centido.Core.EnumColumn.#ctor(System.Guid,Centido.Core.Table)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.EnumColumn"/> class
              for the specified column id and parent table.
            </summary>
            <param name="columnId">The column id.</param>
            <param name="table">The parent table.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.EnumColumn.#ctor(System.Guid,Centido.Core.Table,System.String,System.String,System.String,System.Boolean,System.Int32,System.Int32)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.EnumColumn"/> class
              for the specified column id, name, display name,
            description, nullability, order index, customization level and parent table.
            </summary>
            <param name="columnId">The column id.</param>
            <param name="table">The parent table.</param>
            <param name="columnName">The column name.</param>
            <param name="displayName">The column display name.</param>
            <param name="description">The column description.</param>
            <param name="isNotNull">The column ability to hold null values.</param>
            <param name="orderIndex">The column order index.</param>
            <param name="customizationlevel">The column customization level.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
        </member>
        <member name="M:Centido.Core.EnumColumn.GetMember(System.Int32)">
            <summary>
              Retrieves the enumeration member by the specified value.
            </summary>
            <param name = "value">The specified enumeration member value.</param>
            <returns>Returns the enumeration member with the specified value if the one exists; otherwise returns null.</returns>
            <example>
              The following example shows how to get an enumeration member by its value.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Adding a new table
                        var table = domain.AddTable("my_table");
                        
                        //Creating an enumeration column
                        var column = table.AddColumn("enum_column", ColumnType.Enumeration)
                            as EnumColumn;
                        
                        //Adding some enumeration members
                        column.AddMember(1).DisplayName = "The first member";
                        column.AddMember(2).DisplayName = "The second member";
                        column.AddMember(3).DisplayName = "The third member";
            
                        //Getting the member by its value
                        Console.WriteLine("Enumeration member: value = {0}, display name = {1}",
                            1, column.GetMember(1).DisplayName);
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.EnumColumn.AddMember(System.Int32)">
            <summary>
              Creates a new enumeration member with the specified value.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to execute this function.</remarks>
            <param name="value">The enumeration member value.</param>
            <returns>Returns the newly created enumeration member.</returns>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is already a member with the same value in the same enumeration column.</exception>
            <example>
              The following example shows how to create enumeration column members.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Adding a new table
                        var table = domain.AddTable("my_table");
                        
                        //Creating an enumeration column
                        var column = table.AddColumn("enum_column", ColumnType.Enumeration)
                            as EnumColumn;
                        
                        //Adding some enumeration members
                        column.AddMember(1).DisplayName = "The first member";
                        column.AddMember(2).DisplayName = "The second member";
                        column.AddMember(3).DisplayName = "The third member";
            
                        //Getting the enumeration members
                        foreach(var m in column.Members)
                            Console.WriteLine("Enumeration member: value = {0}, display name = {1}",
                                m.Value, m.DisplayName);
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.EnumColumn.DeleteMember(Centido.Core.EnumMember)">
            <summary>
              Deletes the specified enumeration member.
            </summary>
            <remarks>
            <para>The current user has to have the permission to change the schema in order to execute this function.</para>
            <para>Deleting of an enumeration member results in setting the column to null for those rows that contain the value of the deleted member.</para>
            </remarks>
            <param name="enumMember">The enumeration member to be deleted.</param>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is no enumeration member with such value.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there are rows that contain the value of the specified enumeration member and the column is set to be not nullable.</exception>
            <example>
              The following example shows how to delete an enumeration member.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Adding a new table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();            
            
                        //Creating an enumeration column
                        var column = table.AddColumn("enum_column", ColumnType.Enumeration)
                            as EnumColumn;
                        
                        //Adding some enumeration members
                        column.AddMember(1);
                        column.AddMember(2);
                        column.AddMember(3);
            
                        //Inserting two rows
                        var firstRowId = table.InsertRow(column.Value(1));
                        var secondRowId = table.InsertRow(column.Value(2));
                        var thirdRowId = table.InsertRow(column.Value(3));
            
                        //Deleting the first member
                        column.DeleteMember(column.GetMember((1)));
            
                        //Enumerating the enumeration members
                        foreach(var m in column.Members)
                            Console.WriteLine("Enumeration member: value = {0}", m.Value);
            
                        //Checking the row values
                        Console.WriteLine("First row: value = {0}", column.Read(firstRowId).GetInteger());
                        Console.WriteLine("Second row: value = {0}", column.Read(secondRowId).GetInteger());
                        Console.WriteLine("Third row: value = {0}", column.Read(thirdRowId).GetInteger());
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.EnumColumn.DeleteMember(System.Int32)">
            <summary>
              Deletes an enumeration member with the specified value.
            </summary>
            <remarks>
            <para>The current user has to have the permission to change the schema in order to execute this function.</para>
            <para>Deleting of an enumeration member results in setting the column to null for those rows that contain the value of the deleted member.</para>
            </remarks>
            <param name="value">The enumeration member value.</param>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is no enumeration member with such value.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there are rows that contain the value of the specified enumeration member and the column is set to be not nullable.</exception>
            <example>
              The following example shows how to delete an enumeration member.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Adding a new table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();            
            
                        //Creating an enumeration column
                        var column = table.AddColumn("enum_column", ColumnType.Enumeration)
                            as EnumColumn;
                        
                        //Adding some enumeration members
                        column.AddMember(1);
                        column.AddMember(2);
                        column.AddMember(3);
            
                        //Inserting two rows
                        var firstRowId = table.InsertRow(column.Value(1));
                        var secondRowId = table.InsertRow(column.Value(2));
                        var thirdRowId = table.InsertRow(column.Value(3));
            
                        //Deleting the first member
                        column.DeleteMember(1);
            
                        //Enumerating the enumeration members
                        foreach(var m in column.Members)
                            Console.WriteLine("Enumeration member: value = {0}", m.Value);
            
                        //Checking the row values
                        Console.WriteLine("First row: value = {0}", column.Read(firstRowId).GetInteger());
                        Console.WriteLine("Second row: value = {0}", column.Read(secondRowId).GetInteger());
                        Console.WriteLine("Third row: value = {0}", column.Read(thirdRowId).GetInteger());
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.EnumColumn.PrepareForRemoving">
            <summary>
              Prepares the column for removing.
            </summary>
        </member>
        <member name="M:Centido.Core.EnumColumn.Refresh">
            <summary>
              Refreshes the properties of the column.
            </summary>
        </member>
        <member name="M:Centido.Core.EnumColumn.Add(Centido.Core.Table,System.String)">
            <summary>
              Adds a new enumeration column with the specified name to the specified table.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to execute this function.</remarks>
            <param name="table">The table.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is a column with the same name in the same user-defined table.</exception>
            <returns>Returns the newly created enumeration table column.</returns>
            <example>
              The following example shows how to add a enumeration column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a enumeration table column
                        var column = EnumColumn.Add(table, "my_column");
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.EnumColumn.Add(Centido.Core.Table,System.Guid,System.String)">
            <summary>
              Adds a new enumeration table column with the specified id and name to the specified table.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to execute this function.</remarks>
            <param name="table">The table.</param>
            <param name="columnId">The column id.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is a column with the same id or the same name in the same user-defined table.</exception>
            <returns>Returns the newly created enumeration table column.</returns>
            <example>
              The following example shows how to create a enumeration table column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a enumeration table column
                        var column = EnumColumn.Add(table, Guid.NewGuid(), "my_column");
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.EnumColumn.Ensure(Centido.Core.Table,System.String)">
            <summary>
              Ensures that the table contains a enumeration column with the specified name.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to execute this function.</remarks>
            <param name="table">The table.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to add a column and
            the current user has no permission to change the schema.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the 
            specified name but different column type.</exception>
            <returns>Returns a enumeration table column with the specified name.</returns>
            <example>
              The following example shows how to ensure that a table has a enumeration column with the specified name.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a enumeration table column
                        table.AddColumn("first_column", ColumnType.Enumeration);
            
                        //Ensuring the first column
                        EnumColumn.Ensure(table, "first_column");
                        //Ensuring the second column
                        EnumColumn.Ensure(table, "second_column");
            
                        foreach(var column in table.Columns)
                            Console.WriteLine("Table column: name = {0}, type = {1}", column.Name, column.ColumnType);
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.EnumColumn.Ensure(Centido.Core.Table,System.Guid,System.String)">
            <summary>
              Ensures that the table contains a enumeration column with the specified id and the specified name.
            </summary>
            <param name="table">The table.</param>
            <param name="columnId">The column id.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to add a column and
            the current user has no permission to change the schema.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the
            specified id but different column name.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the 
            specified id but different column type.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the specified name
            but different column id.</exception>
            <returns>Returns the table column with the specified id, the specified name and the specified type.</returns>
            <returns>Returns the table column with the specified id, the specified name and the specified type.</returns>
            <example>
              The following example shows how to ensure a enumeration column with the specified id and
            the specified name.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a table column
                        var columnId = Guid.NewGuid();
                        table.AddColumn(columnId, "first_column", ColumnType.Enumeration);
            
                        //Ensuring the first column
                        EnumColumn.Ensure(table, columnId, "first_column");
                        //Ensuring the second column
                        EnumColumn.Ensure(table, Guid.NewGuid(), "second_column");
            
                        foreach(var column in table.Columns)
                            Console.WriteLine("Table column: name = {0}, type = {1}", column.Name, column.ColumnType);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.EnumColumn.ColumnType">
            <summary>
              Gets the column type.
            </summary>
        </member>
        <member name="P:Centido.Core.EnumColumn.ValueOdbcType">
            <summary>
              Gets the column value database type.
            </summary>
            <example>
              The following example shows the enumeration column value database type.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Adding a new table
                        var table = domain.AddTable("my_table");
                        
                        //Creating an enumeration column
                        var column = table.AddColumn("enum_column", ColumnType.Enumeration)
                            as EnumColumn;
                        
                        Console.WriteLine("Enumeration column: value db type = {0}", column.ValueOdbcType);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.EnumColumn.Members">
            <summary>
              Gets the enumeration members.
            </summary>
            <example>
              The following example shows how to get the enumeration column members.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Adding a new table
                        var table = domain.AddTable("my_table");
                        
                        //Creating an enumeration column
                        var column = table.AddColumn("enum_column", ColumnType.Enumeration)
                            as EnumColumn;
                        
                        //Adding some enumeration members
                        column.AddMember(1).DisplayName = "The first member";
                        column.AddMember(2).DisplayName = "The second member";
                        column.AddMember(3).DisplayName = "The third member";
            
                        //Getting the enumeration members
                        foreach(var m in column.Members)
                            Console.WriteLine("Enumeration member: value = {0}, display name = {1}",
                                m.Value, m.DisplayName);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.EnumColumn.BackEndTableName">
            <summary>
              Gets the backend table name.
            </summary>
        </member>
        <member name="P:Centido.Core.EnumColumn.DefaultValue">
            <summary>
              Gets or sets the column default value.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to set this property.</remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to set the property.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to set the property to a value that is not a member of the enumeration.</exception>
            <example>
              The following example shows how to set the default value of the enumeration.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Adding a new table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
                        
                        //Creating an enumeration column
                        var column = table.AddColumn("enum_column", ColumnType.Enumeration)
                            as EnumColumn;
                        
                        //Adding some enumeration members
                        column.AddMember(1).DisplayName = "The first member";
                        column.AddMember(2).DisplayName = "The second member";
                        column.AddMember(3).DisplayName = "The third member";
            
                        //Setting the default value
                        column.DefaultValue = 1;
            
                        //Inserting a new row
                        var id = table.InsertRow();
            
                        //Reading the inserted value
                        Console.WriteLine("Enumeration: inserted value = {0}", column.Read(id).GetInteger());
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.EnumColumn.ValueChecking">
            <summary>
              Gets or sets the availability of the enum value checking.
            </summary>
            <remarks>
              The current user has to have the permission to change the schema in order to set this property.
            </remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user
            has no permission to set this property.</exception>
            <example>
              The following example shows how to turn the enum value checking off.
            <code>
                using System;
                using System.Data.Common;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Adding a new table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();            
            
                        //Creating an enumeration column
                        var column = table.AddColumn("enum_column", ColumnType.Enumeration)
                            as EnumColumn;
                        
                        //Adding some enumeration members
                        column.AddMember(1);
                        column.AddMember(2);
                        column.AddMember(3);
            
                        Console.WriteLine("Turning the value checking off");
            
                        column.ValueChecking = false;
            
                        Console.WriteLine("Inserting an invalid value");
            
                        var id = table.InsertRow(column.Value(5));
            
                        Console.WriteLine("Column value = {0}", column.Read(id).GetInteger());
            
                        try
                        {
                            column.ValueChecking = true;
                        }
                        catch(DbException)
                        {
                            Console.WriteLine("Cannot turn the checking on when there are invalid values");
                        }            
                    }
                }
            </code>
            </example>
        </member>
        <member name="T:Centido.Core.SmallIntColumn">
            <summary>
              A small integer table column.
            </summary>
            <remarks>A small integer table column can store values ranging from -32768 to 32767.</remarks>
            <example>
              The following example shows how to use a small integer column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
            
                        //Creating a small integer column
                        var column = table.AddColumn("my_column", ColumnType.SmallInteger)
                            as SmallIntColumn;
            
                        //Setting the column bounds
                        column.Minimum = 0;
                        column.Maximum = 10;
            
                        //Setting the column default value
                        column.DefaultValue = 1;
            
                        //Inserting a new row
                        var id = table.InsertRow();
            
                        Console.WriteLine("The inserted value = {0}", column.Read(id).GetSmallInteger());
                    }
                }
            </code>
            </example>
        </member>
        <member name="F:Centido.Core.SmallIntColumn._defaultValue">
            <summary>
              The default value of the column.
            </summary>
        </member>
        <member name="F:Centido.Core.SmallIntColumn._minimum">
            <summary>
              The minimum value of the column.
            </summary>
        </member>
        <member name="F:Centido.Core.SmallIntColumn._maximum">
            <summary>
              The maximum value of the column.
            </summary>
        </member>
        <member name="M:Centido.Core.SmallIntColumn.#ctor(System.Guid,Centido.Core.Table)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.SmallIntColumn"/> class
              for the specified column id and parent table.
            </summary>
            <param name="columnId">The column id.</param>
            <param name="table">The parent table.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.SmallIntColumn.#ctor(System.Guid,Centido.Core.Table,System.String,System.String,System.String,System.Boolean,System.Int32,System.Int32)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.SmallIntColumn"/> class
              for the specified column id, name, display name,
            description, nullability, order index, customization level and parent table.
            </summary>
            <param name="columnId">The column id.</param>
            <param name="table">The parent table.</param>
            <param name="columnName">The column name.</param>
            <param name="displayName">The column display name.</param>
            <param name="description">The column description.</param>
            <param name="isNotNull">The column ability to hold null values.</param>
            <param name="orderIndex">The column order index.</param>
            <param name="customizationlevel">The column customization level.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
        </member>
        <member name="M:Centido.Core.SmallIntColumn.Refresh">
            <summary>
              Refreshes the properties of the column.
            </summary>
        </member>
        <member name="M:Centido.Core.SmallIntColumn.Add(Centido.Core.Table,System.String)">
            <summary>
              Adds a new small integer column with the specified name to the specified table.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to execute this function.</remarks>
            <param name="table">The table.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is a column with the same name in the same user-defined table.</exception>
            <returns>Returns the newly created small integer table column.</returns>
            <example>
              The following example shows how to add a small integer column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a small integer table column
                        var column = SmallIntColumn.Add(table, "my_column");
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.SmallIntColumn.Add(Centido.Core.Table,System.Guid,System.String)">
            <summary>
              Adds a new small integer table column with the specified id and name to the specified table.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to execute this function.</remarks>
            <param name="table">The table.</param>
            <param name="columnId">The column id.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is a column with the same id or the same name in the same user-defined table.</exception>
            <returns>Returns the newly created small integer table column.</returns>
            <example>
              The following example shows how to create a small integer table column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a small integer table column
                        var column = SmallIntColumn.Add(table, Guid.NewGuid(), "my_column");
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.SmallIntColumn.Ensure(Centido.Core.Table,System.String)">
            <summary>
              Ensures that the table contains a small integer column with the specified name.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to execute this function.</remarks>
            <param name="table">The table.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to add a column and
            the current user has no permission to change the schema.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the 
            specified name but different column type.</exception>
            <returns>Returns a small integer table column with the specified name.</returns>
            <example>
              The following example shows how to ensure that a table has a small integer column with the specified name.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a small integer table column
                        table.AddColumn("first_column", ColumnType.SmallInteger);
            
                        //Ensuring the first column
                        SmallIntColumn.Ensure(table, "first_column");
                        //Ensuring the second column
                        SmallIntColumn.Ensure(table, "second_column");
            
                        foreach(var column in table.Columns)
                            Console.WriteLine("Table column: name = {0}, type = {1}", column.Name, column.ColumnType);
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.SmallIntColumn.Ensure(Centido.Core.Table,System.Guid,System.String)">
            <summary>
              Ensures that the table contains a small integer column with the specified id and the specified name.
            </summary>
            <param name="table">The table.</param>
            <param name="columnId">The column id.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to add a column and
            the current user has no permission to change the schema.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the
            specified id but different column name.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the 
            specified id but different column type.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the specified name
            but different column id.</exception>
            <returns>Returns the table column with the specified id, the specified name and the specified type.</returns>
            <returns>Returns the table column with the specified id, the specified name and the specified type.</returns>
            <example>
              The following example shows how to ensure a small integer column with the specified id and
            the specified name.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a table column
                        var columnId = Guid.NewGuid();
                        table.AddColumn(columnId, "first_column", ColumnType.SmallInteger);
            
                        //Ensuring the first column
                        SmallIntColumn.Ensure(table, columnId, "first_column");
                        //Ensuring the second column
                        SmallIntColumn.Ensure(table, Guid.NewGuid(), "second_column");
            
                        foreach(var column in table.Columns)
                            Console.WriteLine("Table column: name = {0}, type = {1}", column.Name, column.ColumnType);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.SmallIntColumn.ColumnType">
            <summary>
              Gets the column type.
            </summary>
        </member>
        <member name="P:Centido.Core.SmallIntColumn.ValueOdbcType">
            <summary>
              Gets the column value database type.
            </summary>
        </member>
        <member name="P:Centido.Core.SmallIntColumn.BackEndTableName">
            <summary>
              Gets the column backend table name.
            </summary>
        </member>
        <member name="P:Centido.Core.SmallIntColumn.Maximum">
            <summary>
              Gets or sets the maximum value of the column.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to set this property.</remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the the current user has no permission to set this property.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to set this property to true and there are rows that contain invalid values.</exception>
            <example>
              The following example shows how to set the maximum value of a small integer column.
            <code>
                using System;
                using System.Data.Common;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
            
                        //Creating a small integer column
                        var column = table.AddColumn("my_column", ColumnType.SmallInteger)
                            as SmallIntColumn;
            
                        //Setting the column maximum
                        column.Maximum = 1;
            
                        //Trying to insert an invalid value
                        try
                        {
                            table.InsertRow(column.Value(2));
                        }
                        catch(DbException)
                        {
                            Console.WriteLine("Inserting values greater than the maximum is forbidden");
                        }
            
                        Console.WriteLine("Table: row count = {0}", table.RowCount);
            
                        //Inserting a valid value
                        table.InsertRow(column.Value(0));
            
                        Console.WriteLine("Table: row count = {0}", table.RowCount);
                    }
                } 
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.SmallIntColumn.Minimum">
            <summary>
              Gets or sets the minimum value of the column.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to set this property.</remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to set this property.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to set this property to true and there are rows that contain invalid values.</exception>
            <example>
              The following example shows how to set the minimum value of a small integer column.
            <code>
                using System;
                using System.Data.Common;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
            
                        //Creating an small integer column
                        var column = table.AddColumn("my_column", ColumnType.SmallInteger)
                            as SmallIntColumn;
            
                        //Setting the column minimum
                        column.Minimum = 1;
            
                        //Trying to insert an invalid value
                        try
                        {
                            table.InsertRow(column.Value(0));
                        }
                        catch(DbException)
                        {
                            Console.WriteLine("Inserting values less than the minimum is forbidden");
                        }
            
                        Console.WriteLine("Table: row count = {0}", table.RowCount);
            
                        //Inserting a valid value
                        table.InsertRow(column.Value(2));
            
                        Console.WriteLine("Table: row count = {0}", table.RowCount);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.SmallIntColumn.DefaultValue">
            <summary>
              Gets or sets the default value of the column.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to set this property.</remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to set this property.</exception>
            <example>
              The following example shows how to set the default value of a small integer column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
            
                        //Creating a small integer column
                        var column = table.AddColumn("my_column", ColumnType.SmallInteger)
                            as SmallIntColumn;
            
                        //Setting the column default value
                        column.DefaultValue = 1;
            
                        //Inserting a row
                        var id = table.InsertRow();
            
                        Console.WriteLine("Inserted value = {0}", column.Read(id).GetSmallInteger());
                    }
                }
            </code>
            </example>
        </member>
        <member name="T:Centido.Core.CurrentUser">
            <summary>
              The currently logged in user.
            </summary>
        </member>
        <member name="F:Centido.Core.CurrentUser._domain">
            <summary>
              The current domain.
            </summary>
        </member>
        <member name="F:Centido.Core.CurrentUser._displayName">
            <summary>
              The display name of the current user.
            </summary>
        </member>
        <member name="F:Centido.Core.CurrentUser._canChangeSchema">
            <summary>
              The current user ability to change the schema.
            </summary>
        </member>
        <member name="F:Centido.Core.CurrentUser._canChangeSecurity">
            <summary>
              The current user ability to change security settings.
            </summary>
        </member>
        <member name="M:Centido.Core.CurrentUser.#ctor(Centido.Core.Domain)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.CurrentUser"/> class
            for the specified domain.
            </summary>
            <param name="domain">The current domain.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="domain"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.CurrentUser.ChangePassword(System.String,System.String)">
            <summary>
              Changes the current user password.
            </summary>
            <param name="oldPassword">The old password.</param>
            <param name="newPassword">The new password.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="oldPassword"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="newPassword"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the old password is not a correct one.</exception>
            <example>
              The following example shows how to change the current uer password.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Changing the current user password
                        domain.CurrentUser.ChangePassword("P@ssw0rd", "NewP@ssw0rd");
            
                        //Logging in with the new password
                        var newDomain = domain.Logon(domain.CurrentUser.Name, "NewP@ssw0rd");
            
                        if (newDomain != null)
                            Console.WriteLine("The password was changed");
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.CurrentUser.ReadProperty(System.String)">
            <summary>
              Reads the current user property.
            </summary>
            <param name = "propertyName">The property name.</param>
            <returns>Returns the property value.</returns>
        </member>
        <member name="M:Centido.Core.CurrentUser.WriteProperty(System.String,System.Object,System.Data.OdbcType)">
            <summary>
              Writes the current user property.
            </summary>
            <param name = "propertyName">The property name.</param>
            <param name = "propertyValue">The property value.</param>
            <param name = "propertyType">The property value database type.</param>
        </member>
        <member name="M:Centido.Core.CurrentUser.CanDo(Centido.Core.Table,Centido.Core.DataAction)">
            <summary>
              Checks the current user ability to do the specified operation on the specified table.
            </summary>
            <param name="table">The specified table.</param>
            <param name="dataAction">The specified data action.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <returns>Returns true if the current user has the ability to perform the requested action; otherwise, false.</returns>
            <example>
              The following example shows how to check the current user ability to do the specified operation on the specified table.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
            
                        //Creating a table
                        var table = domain.AddTable("my_table");
            
                        //Granting the select permission on the table to the current user
                        table.Grant(DataAction.Select);
            
                        //Checking the current user ability to select from the table
                        if (domain.CurrentUser.CanDo(table, DataAction.Select))
                        {
                            Console.WriteLine("The current user has the ability to select from the table");
            
                            Console.WriteLine("Table: row count = {0}", table.RowCount);
                        }            
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.CurrentUser.CanDo(System.Guid,Centido.Core.DataAction)">
            <summary>
              Checks the current user ability to do the specified operation on the specified table.
            </summary>
            <param name = "tableId">The id of the specified table.</param>
            <param name = "dataAction">The specified data action.</param>
            <returns>Returns true if the current user has the ability to do the specified operation on the specified table;
            otherwise, false.</returns>
            <example>
                The following example shows how to check the current user ability to do the specified operation on the specified table.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
            
                        //Creating a table
                        var table = domain.AddTable("my_table");
            
                        //Granting the select permission on the table to the current user
                        table.Grant(DataAction.Select);
            
                        //Checking the current user ability to select from the table
                        if (domain.CurrentUser.CanDo(table.Id, DataAction.Select))
                        {
                            Console.WriteLine("The current user has the ability to select from the table");
            
                            Console.WriteLine("Table: row count = {0}", table.RowCount);
                        }            
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.CurrentUser.CanDo(Centido.Core.Table,Centido.Core.DataAction,System.String)">
            <summary>
              Checks the current user ability to do the specified operation with table rows that have the specified owner.
            </summary>
            <param name="table">The specified table.</param>
            <param name="dataAction">The requested data action.</param>
            <param name="rowOwner">The specified row owner.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="rowOwner"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="rowOwner"/> is an empty string.</exception>
            <returns>Returns true if the current user has the ability to do the specified operation with table rows
            that have the specified owner; otherwise, false.</returns>
            <example>
              The following example shows how to check the current user ability to do
            the specified operation with table rows that have the specified owner.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
            
                        //Creating another two users
                        var firstUser = domain.AddUser("first_user", "P@ssw0rd");
                        var secondUser = domain.AddUser("second_user", "P@ssw0rd");
            
                        //Adding the current user and the first user in the same unit
                        var unit = domain.AddUnit();
                        unit.AddUser(domain.CurrentUser);
                        unit.AddUser(firstUser);
            
                        //Creating a table
                        var table = domain.AddTable("my_table");
            
                        //Granting the select permission to the current user
                        table.Grant(DataAction.Select);
            
                        //Granting the update unit data permission to the current user
                        table.Grant(DataAction.Update, AccessLevel.Unit);
            
                        Console.WriteLine("The ability to update {0} rows = {1}",
                            domain.CurrentUser.Name,
                            domain.CurrentUser.CanDo(table, DataAction.Update, domain.CurrentUser.Name));
                        Console.WriteLine("The ability to update {0} rows = {1}",
                            firstUser.Name,
                            domain.CurrentUser.CanDo(table, DataAction.Update, firstUser.Name));
                        Console.WriteLine("The ability to update {0} rows = {1}",
                            secondUser.Name,
                            domain.CurrentUser.CanDo(table, DataAction.Update, secondUser.Name));
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.CurrentUser.CanDo(Centido.Core.Table,Centido.Core.DataAction,Centido.Core.IUser)">
            <summary>
              Checks the current user ability to do the specified operation with table rows that have the specified owner.
            </summary>
            <param name="table">The specified table.</param>
            <param name="dataAction">The requested data action.</param>
            <param name="rowOwner">The specified row owner.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="rowOwner"/> is null.</exception>
            <returns>Returns true if the current user has the ability to do the specified operation with table rows
            that have the specified owner; otherwise, false.</returns>
            <example>
              The following example shows how to check the current user ability to do
            the specified operation with table rows that have the specified owner.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
            
                        //Creating another two users
                        var firstUser = domain.AddUser("first_user", "P@ssw0rd");
                        var secondUser = domain.AddUser("second_user", "P@ssw0rd");
            
                        //Adding the current user and the first user in the same unit
                        var unit = domain.AddUnit();
                        unit.AddUser(domain.CurrentUser);
                        unit.AddUser(firstUser);
            
                        //Creating a table
                        var table = domain.AddTable("my_table");
            
                        //Granting the select permission to the current user
                        table.Grant(DataAction.Select);
            
                        //Granting the update unit data permission to the current user
                        table.Grant(DataAction.Update, AccessLevel.Unit);
            
                        Console.WriteLine("The ability to update {0} rows = {1}",
                            domain.CurrentUser.Name,
                            domain.CurrentUser.CanDo(table, DataAction.Update, domain.CurrentUser));
                        Console.WriteLine("The ability to update {0} rows = {1}",
                            firstUser.Name,
                            domain.CurrentUser.CanDo(table, DataAction.Update, firstUser));
                        Console.WriteLine("The ability to update {0} rows = {1}",
                            secondUser.Name,
                            domain.CurrentUser.CanDo(table, DataAction.Update, secondUser));
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.CurrentUser.CanDo(System.Guid,Centido.Core.DataAction,Centido.Core.IUser)">
            <summary>
              Checks the current user ability to do the specified operation with table rows that have the specified owner.
            </summary>
            <param name="tableId">The id of the specified table.</param>
            <param name="dataAction">The requested data action.</param>
            <param name="rowOwner">The specified row owner.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="rowOwner"/> is null.</exception>
            <returns>Returns true if the current user has the ability to do the specified operation with table rows
            that have the specified owner; otherwise, false.</returns>
            <example>
              The following example shows how to check the current user ability to do
            the specified operation with table rows that have the specified owner.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
            
                        //Creating another two users
                        var firstUser = domain.AddUser("first_user", "P@ssw0rd");
                        var secondUser = domain.AddUser("second_user", "P@ssw0rd");
            
                        //Adding the current user and the first user in the same unit
                        var unit = domain.AddUnit();
                        unit.AddUser(domain.CurrentUser);
                        unit.AddUser(firstUser);
            
                        //Creating a table
                        var table = domain.AddTable("my_table");
            
                        //Granting the select permission to the current user
                        table.Grant(DataAction.Select);
            
                        //Granting the update unit data permission to the current user
                        table.Grant(DataAction.Update, AccessLevel.Unit);
            
                        Console.WriteLine("The ability to update {0} rows = {1}",
                            domain.CurrentUser.Name,
                            domain.CurrentUser.CanDo(table.Id, DataAction.Update, domain.CurrentUser));
                        Console.WriteLine("The ability to update {0} rows = {1}",
                            firstUser.Name,
                            domain.CurrentUser.CanDo(table.Id, DataAction.Update, firstUser));
                        Console.WriteLine("The ability to update {0} rows = {1}",
                            secondUser.Name,
                            domain.CurrentUser.CanDo(table.Id, DataAction.Update, secondUser));
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.CurrentUser.CanDo(System.Guid,Centido.Core.DataAction,System.String)">
            <summary>
              Checks the current user ability to do the specified operation with table rows that have the specified owner.
            </summary>
            <param name="tableId">The id of the specified table.</param>
            <param name="dataAction">The requested data action.</param>
            <param name="rowOwner">The specified row owner.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="rowOwner"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="rowOwner"/> is an empty string.</exception>
            <returns>Returns true if the current user has the ability to do the specified operation with table rows
            that have the specified owner; otherwise, false.</returns>
            <example>
              The following example shows how to check the current user ability to do
            the specified operation with table rows that have the specified owner.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
            
                        //Creating another two users
                        var firstUser = domain.AddUser("first_user", "P@ssw0rd");
                        var secondUser = domain.AddUser("second_user", "P@ssw0rd");
            
                        //Adding the current user and the first user in the same unit
                        var unit = domain.AddUnit();
                        unit.AddUser(domain.CurrentUser);
                        unit.AddUser(firstUser);
            
                        //Creating a table
                        var table = domain.AddTable("my_table");
            
                        //Granting the select permission to the current user
                        table.Grant(DataAction.Select);
            
                        //Granting the update unit data permission to the current user
                        table.Grant(DataAction.Update, AccessLevel.Unit);
            
                        Console.WriteLine("The ability to update {0} rows = {1}",
                            domain.CurrentUser.Name,
                            domain.CurrentUser.CanDo(table.Id, DataAction.Update, domain.CurrentUser.Name));
                        Console.WriteLine("The ability to update {0} rows = {1}",
                            firstUser.Name,
                            domain.CurrentUser.CanDo(table.Id, DataAction.Update, firstUser.Name));
                        Console.WriteLine("The ability to update {0} rows = {1}",
                            secondUser.Name,
                            domain.CurrentUser.CanDo(table.Id, DataAction.Update, secondUser.Name));
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.CurrentUser.Refresh">
            <summary>
              Refreshes the properties of the current user.
            </summary>
        </member>
        <member name="P:Centido.Core.CurrentUser.Domain">
            <summary>
              Gets the current domain.
            </summary>
        </member>
        <member name="P:Centido.Core.CurrentUser.DisplayName">
            <summary>
              Gets or sets the current user display name.
            </summary>
            <exception cref="T:System.Data.Common.DbException">When trying to set the peroperty equal to a too long value.</exception>
            <example>
              The following example shows how to set the display name of the current user.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Setting the current user display name
                        domain.CurrentUser.DisplayName = "The current user display name";
            
                        Console.WriteLine("Current user: display name = {0}", domain.CurrentUser.DisplayName);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.CurrentUser.CanChangeSchema">
            <summary>
              Gets the current user permission to change the schema.
            </summary>
            <value>True if the current user has the permission to change the schema; otherwise, false.</value>
            <example>
              The following example show how to check the current user permission to change the schema.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        if (domain.CurrentUser.CanChangeSchema)
                        {
                            domain.AddTable("my_table");
            
                            Console.WriteLine("The current user has the permission to change the schema");
                        }
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.CurrentUser.CanChangeSecurity">
            <summary>
              Gets the current user permission to change security settings.
            </summary>
            <value>True if the current user has the permission to change security settings; otherwise, false.</value>
            <example>
               The following example show how to check the current user permission to change security settings.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        if (domain.CurrentUser.CanChangeSecurity)
                        {
                            domain.AddRole("my_role");
            
                            Console.WriteLine("The current user has the permission to change security settings");
                        }
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.CurrentUser.TablePermissions">
            <summary>
              Gets the current user table permissions.
            </summary>
            <remarks>The current user has to have the permission to change the security settings in order to read this property.</remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to read this property.</exception>
            <example>
              The following example shows how to read the current user table permissions.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
            
                        //Granting all parmissions on the table to the current user
                        table.GrantAll();
            
                        foreach(var perm in domain.CurrentUser.TablePermissions)
                        {
                            Console.WriteLine("Table permissions = {0}", perm.DataAction);
                        }
                    }
                }   
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.CurrentUser.TableAccessRights">
            <summary>
              Gets the current user table security access rights.
            </summary>
            <remarks>Each table permissions produces a number of more granular level
            security access rigths.</remarks>
            <example>
              The following example shows how to get the current user security access rights.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
            
                        //Creating two users
                        var firstUser = domain.AddUser("first_user", "P@ssw0rd");
                        var secondUser = domain.AddUser("second_user", "P@ssw0rd");
            
                        //Adding the current and the first user to the same unit
                        var unit = domain.AddUnit();
            
                        unit.AddUser(firstUser);
                        unit.AddUser(domain.CurrentUser);
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
            
                        //Granting the permission to select all rows to the current user
                        table.Grant(DataAction.Select);
                        //Granting the permission to update unit data to the current user
                        table.Grant(DataAction.Update, AccessLevel.Unit);
            
                        foreach(var right in domain.CurrentUser.TableAccessRights)
                        {
                            if (right is TableAccessRight) 
                                Console.WriteLine("Access right: action = {0}, owner = {1}",
                                    (right as TableAccessRight).DataAction,
                                    (right as TableAccessRight).Owner.Name);
                            else if (right is TableFullAccessRight) 
                                Console.WriteLine("Access right: action = {0}, full access",
                                    (right as TableFullAccessRight).DataAction);
                        }
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.CurrentUser.Name">
            <summary>
              Gets the current user name.
            </summary>
            <example>
              The following example shows how to get the current user name.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        Console.WriteLine("Current user: name = {0}", domain.CurrentUser.Name);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.CurrentUser.Units">
            <summary>
              Gets the current user business units.
            </summary>
            <example>
              The following example shows how to get the current user units.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Adding the current user to two units
                        var firstUnit = domain.AddUnit();
                        firstUnit.DisplayName = "The first unit";
                        firstUnit.AddUser(domain.CurrentUser);
            
                        var secondUnit = domain.AddUnit();
                        secondUnit.DisplayName = "The second unit";
                        secondUnit.AddUser(domain.CurrentUser);
                        
                        foreach(var unit in domain.Units)
                            Console.WriteLine("The current user: unit = {0}", unit.DisplayName);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.CurrentUser.Roles">
            <summary>
              Gets the current user roles.
            </summary>
            <remarks>The current user has to have the permission to change security settings in order to read this property.</remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to read this property.</exception>
            <example>
              The following example shows how to get the roles that contain the current user.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
            
                        //Adding the current user to two role
                        domain.AddRole("first_role").AddUser(domain.CurrentUser);
                        domain.AddRole("second_role").AddUser(domain.CurrentUser);
            
                        foreach(var role in domain.CurrentUser.Roles)
                            Console.WriteLine("Current user: role = {0}", role.Name);
                    }
                }
            </code>
            </example>
        </member>
        <member name="T:Centido.Core.Properties.Resources">
            <summary>
              A strongly-typed resource class, for looking up localized strings, etc.
            </summary>
        </member>
        <member name="P:Centido.Core.Properties.Resources.ResourceManager">
            <summary>
              Returns the cached ResourceManager instance used by this class.
            </summary>
        </member>
        <member name="P:Centido.Core.Properties.Resources.Culture">
            <summary>
              Overrides the current thread's CurrentUICulture property for all
              resource lookups using this strongly typed resource class.
            </summary>
        </member>
        <member name="P:Centido.Core.Properties.Resources.Installation_drop_user_oracle">
            <summary>
              Looks up a localized string similar to DROP USER @@user_name@@ CASCADE;.
            </summary>
        </member>
        <member name="P:Centido.Core.Properties.Resources.Installation_drop_user_sqlserver">
            <summary>
              Looks up a localized string similar to drop user @@user_name@@;.
            </summary>
        </member>
        <member name="P:Centido.Core.Properties.Resources.Installation_logic_oracle">
             <summary>
               Looks up a localized string similar to --0--------------------------------------------------------------------------------------------
            --Creating all table columns view
            create or replace view meta_table_columns
            as select c.table_id, t.table_name, column_id, column_name, order_index, customization_level,
               &apos;meta_string_columns&apos; as column_type
            from meta_string_columns c inner join meta_tables t on c.table_id = t.table_id
            union
            select c.table_id, t.table_name, column_id, column_name, order_index, customization_level,
                &apos;meta_ref_columns&apos; [rest of string was truncated]&quot;;.
             </summary>
        </member>
        <member name="P:Centido.Core.Properties.Resources.Installation_logic_sqlserver">
             <summary>
               Looks up a localized string similar to --0----------------------------------------------------------
            --Creating all table columns view
            create view meta_table_columns
            as select c.table_id, table_name, column_id, column_name, order_index, customization_level,
               &apos;meta_string_columns&apos; as column_type
            from meta_string_columns c inner join meta_tables t
            on c.table_id = t.table_id
            union
            select c.table_id, table_name, column_id, column_name, order_index, customization_level,
                &apos;meta_ref_columns&apos; as column_type
            from meta_ref_columns c inner j [rest of string was truncated]&quot;;.
             </summary>
        </member>
        <member name="P:Centido.Core.Properties.Resources.Installation_meta_owner_oracle">
             <summary>
               Looks up a localized string similar to CREATE USER @@user_name@@ IDENTIFIED BY @@user_password@@ DEFAULT TABLESPACE @@default_tablespace@@ QUOTA UNLIMITED ON @@default_tablespace@@;
            
            --go
            
            GRANT CREATE TRIGGER TO @@user_name@@ WITH ADMIN OPTION;
            
            --go
            
            GRANT DROP USER TO @@user_name@@ WITH ADMIN OPTION;
            
            --go
            
            GRANT CREATE SEQUENCE TO @@user_name@@ WITH ADMIN OPTION;
            
            --go
            
            GRANT ALTER SESSION TO @@user_name@@ WITH ADMIN OPTION;
            
            --go
            
            GRANT CREATE ROLE TO @@user_name@@ WITH ADMIN OPTION;
            
            --go
            
            GRANT CREATE SESSION TO @@ [rest of string was truncated]&quot;;.
             </summary>
        </member>
        <member name="P:Centido.Core.Properties.Resources.Installation_meta_owner_sqlserver">
             <summary>
               Looks up a localized string similar to CREATE LOGIN @@user_name@@ WITH PASSWORD=&apos;@@user_password@@&apos;, DEFAULT_DATABASE=@@db_name@@, CHECK_EXPIRATION=OFF;
            
            go
            
            GRANT ALTER ANY LOGIN TO @@user_name@@;
            
            go
            
            CREATE DATABASE @@db_name@@;
            
            go
            
            ALTER DATABASE @@db_name@@ SET TRUSTWORTHY=ON;
            
            go
            
            USE @@db_name@@;
            
            go
            
            CREATE USER @@user_name@@ FOR LOGIN @@user_name@@ WITH DEFAULT_SCHEMA=dbo;
            
            go
            
            GRANT db_owner TO @@user_name@@;.
             </summary>
        </member>
        <member name="P:Centido.Core.Properties.Resources.Installation_schema_oracle">
             <summary>
               Looks up a localized string similar to --Dropping all objects in the schema
            --Metadata version
            create table meta_version(
                --Metadata component
                major number(5) not null,
                --Component version
                minor number(5) not null
                );
                
            --go
                
            insert into meta_version(major, minor)
            values (1, 0);
            
            --go
            
            --Table of dbms features
            create table meta_dbms_features(
                --Feature name
                feature_name varchar2(255) primary key,
                --Accessability
                is_enabled number(1) not null,
                
                check(is_enabled = 0 or is_ena [rest of string was truncated]&quot;;.
             </summary>
        </member>
        <member name="P:Centido.Core.Properties.Resources.Installation_schema_sqlserver">
             <summary>
               Looks up a localized string similar to --Dropping all objects in the schema
            --Metadata version
            create table meta_version(
                --Metadata component
                major numeric(5) not null,
                --Component version
                minor numeric(5) not null
                );
                
            go
                
            insert into meta_version(major, minor)
            values (1, 0);
            
            go
            
            --Table of dbms features
            create table meta_dbms_features(
                --Feature name
                feature_name varchar(255) primary key,
                --Accessability
                is_enabled numeric(1) not null,
                
                check(is_enabled = 0 or is_enabl [rest of string was truncated]&quot;;.
             </summary>
        </member>
        <member name="P:Centido.Core.Properties.Resources.Uninstallation_oracle">
             <summary>
               Looks up a localized string similar to declare
                --Row count
                a_row_count number;
                --User list
                type a_user_list_type is table of varchar2(26);
                a_user_list a_user_list_type := a_user_list_type();
                --Current user
                a_curr_user varchar2(26);
            begin
                if user = &apos;SYS&apos; or user = &apos;SYSTEM&apos; then
                    return;
                end if;
                
                --Searching for the user list
                select count(*)  into a_row_count
                from user_objects
                where object_type = &apos;TABLE&apos; and object_name = &apos;META_USERS&apos;;
                
                --If there is a user li [rest of string was truncated]&quot;;.
             </summary>
        </member>
        <member name="P:Centido.Core.Properties.Resources.Uninstallation_sqlserver">
            <summary>
              Looks up a localized string similar to begin
            --Deleting all users
            if object_id(&apos;meta_users&apos;) is not null
            begin
            	declare @a_user_name varchar(26),
            	@a_user_cursor cursor;
            	
            	set @a_user_cursor = cursor for
            	select user_name from meta_users;
            	open @a_user_cursor;
            	
            	fetch next from @a_user_cursor into @a_user_name;
            	
            	while @@fetch_status = 0
            	begin
            		exec (&apos;drop user &apos; + @a_user_name);
            		exec (&apos;drop login &apos; + @a_user_name);
            	
            		fetch next from @a_user_cursor into @a_user_name;
            	end;
            	
            	close @a_user_curso [rest of string was truncated]&quot;;.
            </summary>
        </member>
        <member name="T:Centido.Core.Dto.DecimalColumnDto">
            <summary>
              A data transfering object for a decimal table column.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.DecimalColumnDto.XmlTag">
            <summary>
              The name of the xml tag that is used to store this object.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.DecimalColumnDto.CurrentXmlSchemaVersion">
            <summary>
              The current xml schema version.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.DecimalColumnDto.DefaultValueTag">
            <summary>
              The name of the xml tag that is used to store the column default value.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.DecimalColumnDto.MaximumTag">
            <summary>
              The name of the xml tag that is used to store the column maximum value.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.DecimalColumnDto.MinimumTag">
            <summary>
              The name of the xml tag that is used to store the column minimum value.
            </summary>
        </member>
        <member name="M:Centido.Core.Dto.DecimalColumnDto.GetSchema">
            <summary>
              This method is reserved and should not be used. When implementing the IXmlSerializable interface, you should return null (Nothing in Visual Basic) from this method, and instead, if specifying a custom schema is required, apply the <see cref="T:System.Xml.Serialization.XmlSchemaProviderAttribute"/> to the class.
            </summary>
            <returns>
              An <see cref="T:System.Xml.Schema.XmlSchema"/> that describes the XML representation of the object that is produced by the <see cref="M:System.Xml.Serialization.IXmlSerializable.WriteXml(System.Xml.XmlWriter)"/> method and consumed by the <see cref="M:System.Xml.Serialization.IXmlSerializable.ReadXml(System.Xml.XmlReader)"/> method.
            </returns>
        </member>
        <member name="M:Centido.Core.Dto.DecimalColumnDto.ReadXml(System.Xml.XmlReader)">
            <summary>
              Generates an object from its XML representation.
            </summary>
            <param name="reader">The <see cref="T:System.Xml.XmlReader"/> stream from which the object is deserialized. 
            </param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="reader"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.DecimalColumnDto.WriteXml(System.Xml.XmlWriter)">
            <summary>
              Converts an object into its XML representation.
            </summary>
            <param name="writer">The <see cref="T:System.Xml.XmlWriter"/> stream to which the object is serialized. 
            </param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="writer"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.DecimalColumnDto.CopyTo(Centido.Core.DecimalColumn)">
            <summary>
              Copies the properties of the data transfer object to the
            specified decimal column.
            </summary>
            <param name="decimalColumn">The decimal column.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="decimalColumn"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.DecimalColumnDto.CreateFrom(Centido.Core.DecimalColumn)">
            <summary>
              Creates a data transfer object for the specified decimal column.
            </summary>
            <param name="decimalColumn">The specified decimal column.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="decimalColumn"/> is null.</exception>
            <returns>Returns the data transfer object for the specified decimal column.</returns>
        </member>
        <member name="P:Centido.Core.Dto.DecimalColumnDto.DefaultValue">
            <summary>
              Gets or sets the column default value.
            </summary>
        </member>
        <member name="P:Centido.Core.Dto.DecimalColumnDto.Maximum">
            <summary>
              Gets or sets the column maximum value.
            </summary>
        </member>
        <member name="P:Centido.Core.Dto.DecimalColumnDto.Minimum">
            <summary>
              Gets or sets the column minimum value.
            </summary>
        </member>
        <member name="T:Centido.Core.TimeSpanColumn">
            <summary>
              A TimeSpan table column.
            </summary>
            <remarks>A value in a TimeSpan column is stored as an Int64 value representing
            the number of ticks in the timespan.</remarks>
            <example>
              The following example shows how to use a timespan column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
            
                        //Creating a timespan column
                        var column = table.AddColumn("my_column", ColumnType.TimeSpan)
                            as TimeSpanColumn;
            
                        //Seting the default value
                        column.DefaultValue = TimeSpan.FromDays(1);
            
                        //Inserting a row
                        var id = table.InsertRow();
            
                        Console.WriteLine("The inserted value = {0}", column.Read(id).GetTimeSpan());
            
                        //Updating the value
                        table.UpdateRow(id, column.Value(TimeSpan.FromDays(2)));
            
                        Console.WriteLine("The updated value = {0}", column.Read(id).GetTimeSpan());
                    }
                }
            </code>
            </example>
        </member>
        <member name="F:Centido.Core.TimeSpanColumn._defaultValue">
            <summary>
              The default value of the column.
            </summary>
        </member>
        <member name="M:Centido.Core.TimeSpanColumn.#ctor(System.Guid,Centido.Core.Table)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.TimeSpanColumn"/> class
              for the specified column id and parent table.
            </summary>
            <param name="columnId">The column id.</param>
            <param name="table">The parent table.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.TimeSpanColumn.#ctor(System.Guid,Centido.Core.Table,System.String,System.String,System.String,System.Boolean,System.Int32,System.Int32)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.TimeSpanColumn"/> class
              for the specified column id, name, display name,
            description, nullability, order index, customization level and parent table.
            </summary>
            <param name="columnId">The column id.</param>
            <param name="table">The parent table.</param>
            <param name="columnName">The column name.</param>
            <param name="displayName">The column display name.</param>
            <param name="description">The column description.</param>
            <param name="isNotNull">The column ability to hold null values.</param>
            <param name="orderIndex">The column order index.</param>
            <param name="customizationlevel">The column customization level.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
        </member>
        <member name="M:Centido.Core.TimeSpanColumn.Value(System.Object)">
            <summary>
              Creates the column value.
            </summary>
            <remarks>Column values are useful when inserting and updating table rows.</remarks>
            <param name = "columnValue">The value inside.</param>
            <returns>Returns the newly created column value.</returns>
            <example>
              The following example shows how to insert and update a timespan column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
            
                        //Creating a timespan column
                        var column = table.AddColumn("my_column", ColumnType.TimeSpan)
                            as TimeSpanColumn;
            
                        //Inserting a value
                        var id = table.InsertRow(column.Value(TimeSpan.FromDays(1)));
            
                        Console.WriteLine("The inserted value = {0}", column.Read(id).GetTimeSpan());
            
                        //Updating the value
                        table.UpdateRow(id, column.Value(TimeSpan.FromDays(2)));
            
                        Console.WriteLine("The updated value = {0}", column.Read(id).GetTimeSpan());
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.TimeSpanColumn.Add(Centido.Core.Table,System.String)">
            <summary>
              Adds a new timespan column with the specified name to the specified table.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to execute this function.</remarks>
            <param name="table">The table.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is a column with the same name in the same user-defined table.</exception>
            <returns>Returns the newly created timespan table column.</returns>
            <example>
              The following example shows how to add a timespan column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a timespan table column
                        var column = TimeSpanColumn.Add(table, "my_column");
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.TimeSpanColumn.Add(Centido.Core.Table,System.Guid,System.String)">
            <summary>
              Adds a new timespan table column with the specified id and name to the specified table.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to execute this function.</remarks>
            <param name="table">The table.</param>
            <param name="columnId">The column id.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is a column with the same id or the same name in the same user-defined table.</exception>
            <returns>Returns the newly created timespan table column.</returns>
            <example>
              The following example shows how to create a timespan table column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a timespan table column
                        var column = TimeSpanColumn.Add(table, Guid.NewGuid(), "my_column");
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.TimeSpanColumn.Ensure(Centido.Core.Table,System.String)">
            <summary>
              Ensures that the table contains a timespan column with the specified name.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to execute this function.</remarks>
            <param name="table">The table.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to add a column and
            the current user has no permission to change the schema.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the 
            specified name but different column type.</exception>
            <returns>Returns a timespan table column with the specified name.</returns>
            <example>
              The following example shows how to ensure that a table has a timespan column with the specified name.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a timespan table column
                        table.AddColumn("first_column", ColumnType.TimeSpan);
            
                        //Ensuring the first column
                        TimeSpanColumn.Ensure(table, "first_column");
                        //Ensuring the second column
                        TimeSpanColumn.Ensure(table, "second_column");
            
                        foreach(var column in table.Columns)
                            Console.WriteLine("Table column: name = {0}, type = {1}", column.Name, column.ColumnType);
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.TimeSpanColumn.Ensure(Centido.Core.Table,System.Guid,System.String)">
            <summary>
              Ensures that the table contains a timespan column with the specified id and the specified name.
            </summary>
            <param name="table">The table.</param>
            <param name="columnId">The column id.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to add a column and
            the current user has no permission to change the schema.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the
            specified id but different column name.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the 
            specified id but different column type.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the specified name
            but different column id.</exception>
            <returns>Returns the table column with the specified id, the specified name and the specified type.</returns>
            <returns>Returns the table column with the specified id, the specified name and the specified type.</returns>
            <example>
              The following example shows how to ensure a timespan column with the specified id and
            the specified name.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a table column
                        var columnId = Guid.NewGuid();
                        table.AddColumn(columnId, "first_column", ColumnType.TimeSpan);
            
                        //Ensuring the first column
                        TimeSpanColumn.Ensure(table, columnId, "first_column");
                        //Ensuring the second column
                        TimeSpanColumn.Ensure(table, Guid.NewGuid(), "second_column");
            
                        foreach(var column in table.Columns)
                            Console.WriteLine("Table column: name = {0}, type = {1}", column.Name, column.ColumnType);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.TimeSpanColumn.ColumnType">
            <summary>
              Gets the column type.
            </summary>
        </member>
        <member name="P:Centido.Core.TimeSpanColumn.ValueOdbcType">
            <summary>
              Gets the column value database type.
            </summary>
        </member>
        <member name="P:Centido.Core.TimeSpanColumn.BackEndTableName">
            <summary>
              Gets the column backend table name.
            </summary>
        </member>
        <member name="P:Centido.Core.TimeSpanColumn.DefaultValue">
            <summary>
              Gets or sets the default value of the column.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to set this property.</remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to set this property.</exception>
            <example>
              The following example shows how to set the default value of the column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
            
                        //Creating a timespan column
                        var column = table.AddColumn("my_column", ColumnType.TimeSpan)
                            as TimeSpanColumn;
            
                        //Setting the column default value
                        column.DefaultValue = TimeSpan.FromDays(1);
            
                        Console.WriteLine("The default value = {0}", column.DefaultValue);
            
                        //Inserting a row
                        var id = table.InsertRow();
            
                        Console.WriteLine("The inserted value = {0}", column.Read(id).GetTimeSpan());
                    }
                }
            </code>
            </example>
        </member>
        <member name="T:Centido.Core.DbValue">
            <summary>
              Database value converters.
            </summary>
        </member>
        <member name="M:Centido.Core.DbValue.GetString(System.Object)">
            <summary>
              Convertes a value from a database to a string.
            </summary>
            <param name = "dbValue">The database value.</param>
            <returns>Returns the converted string value.</returns>
        </member>
        <member name="M:Centido.Core.DbValue.GetString(Centido.Core.ColumnValue)">
            <summary>
              Converts a database column value to a string.
            </summary>
            <param name="columnValue">The database column value.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnValue"/> is null.</exception>
            <returns>Returns the converted string value.</returns>
        </member>
        <member name="M:Centido.Core.DbValue.GetString(System.Data.Common.DbDataReader,System.String)">
            <summary>
              Retrieves a parameter value and converts it to a string.
            </summary>
            <param name="reader">The database reader.</param>
            <param name="parameterName">The name of the parameter.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="reader"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="parameterName"/> is null.</exception>
            <returns>Returns the converted string value.</returns>
        </member>
        <member name="M:Centido.Core.DbValue.GetInteger(System.Object)">
            <summary>
              Convertes a value from a database to an integer.
            </summary>
            <param name = "dbValue">The database value.</param>
            <returns>Returns the converted integer value or null.</returns>
        </member>
        <member name="M:Centido.Core.DbValue.GetInteger(Centido.Core.ColumnValue)">
            <summary>
              Converts a database column value to an integer.
            </summary>
            <param name="columnValue">The database column value.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnValue"/> is null.</exception>
            <returns>Returns the converted integer value or null.</returns>
        </member>
        <member name="M:Centido.Core.DbValue.GetInteger(System.Data.Common.DbDataReader,System.String)">
            <summary>
              Retrieves a parameter value and converts it to an integer.
            </summary>
            <param name="reader">The database reader.</param>
            <param name="parameterName">The name of the parameter.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="reader"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="parameterName"/> is null.</exception>
            <returns>Returns the converted integer value.</returns>
        </member>
        <member name="M:Centido.Core.DbValue.GetSmallInteger(System.Object)">
            <summary>
              Converts a database column value to a small integer.
            </summary>
            <param name = "dbValue">The database value.</param>
            <returns>Returns the converted small integer value or null.</returns>
        </member>
        <member name="M:Centido.Core.DbValue.GetSmallInteger(Centido.Core.ColumnValue)">
            <summary>
              Converts a database column value to a small integer.
            </summary>
            <param name="columnValue">The database column value.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnValue"/> is null.</exception>
            <returns>Returns the converted small integer value or null.</returns>
        </member>
        <member name="M:Centido.Core.DbValue.GetSmallInteger(System.Data.Common.DbDataReader,System.String)">
            <summary>
              Retrieves a parameter value and converts it to a small integer.
            </summary>
            <param name="reader">The database reader.</param>
            <param name="parameterName">The name of the parameter.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="reader"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="parameterName"/> is null.</exception>
            <returns>Returns the converted small integer value.</returns>
        </member>
        <member name="M:Centido.Core.DbValue.GetBigInteger(System.Object)">
            <summary>
              Converts a database column value to a big integer.
            </summary>
            <param name = "dbValue">The database value.</param>
            <returns>Returns the converted big integer value or null.</returns>
        </member>
        <member name="M:Centido.Core.DbValue.GetBigInteger(Centido.Core.ColumnValue)">
            <summary>
              Converts a database column value to a big integer.
            </summary>
            <param name="columnValue">The database column value.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnValue"/> is null.</exception>
            <returns>Returns the converted big integer value or null.</returns>
        </member>
        <member name="M:Centido.Core.DbValue.GetBigInteger(System.Data.Common.DbDataReader,System.String)">
            <summary>
              Retrieves a parameter value and converts it to a big integer.
            </summary>
            <param name="reader">The database reader.</param>
            <param name="parameterName">The name of the parameter.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="reader"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="parameterName"/> is null.</exception>
            <returns>Returns the converted big integer value.</returns>
        </member>
        <member name="M:Centido.Core.DbValue.GetBinary(System.Object)">
            <summary>
              Converts a database column value to a binary.
            </summary>
            <param name = "dbValue">The database value.</param>
            <returns>Returns the converted binary value or null.</returns>
        </member>
        <member name="M:Centido.Core.DbValue.GetBinary(Centido.Core.ColumnValue)">
            <summary>
              Converts a database column value to a binary.
            </summary>
            <param name="columnValue">The database column value.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnValue"/> is null.</exception>
            <returns>Returns the converted binary value or null.</returns>
        </member>
        <member name="M:Centido.Core.DbValue.GetBinary(System.Data.Common.DbDataReader,System.String)">
            <summary>
              Retrieves a parameter value and converts it to a binary.
            </summary>
            <param name="reader">The database reader.</param>
            <param name="parameterName">The name of the parameter.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="reader"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="parameterName"/> is null.</exception>
            <returns>Returns the converted binary value.</returns>
        </member>
        <member name="M:Centido.Core.DbValue.GetBoolean(System.Object)">
            <summary>
              Converts a database column value to a boolean.
            </summary>
            <param name = "dbValue">The database value.</param>
            <returns>Returns the converted boolean value or null.</returns>
        </member>
        <member name="M:Centido.Core.DbValue.GetBoolean(Centido.Core.ColumnValue)">
            <summary>
              Converts a database column value to a boolean.
            </summary>
            <param name="columnValue">The database column value.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnValue"/> is null.</exception>
            <returns>Returns the converted boolean value or null.</returns>
        </member>
        <member name="M:Centido.Core.DbValue.GetBoolean(System.Data.Common.DbDataReader,System.String)">
            <summary>
              Retrieves a parameter value and converts it to a boolean.
            </summary>
            <param name="reader">The database reader.</param>
            <param name="parameterName">The name of the parameter.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="reader"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="parameterName"/> is null.</exception>
            <returns>Returns the converted boolean value.</returns>
        </member>
        <member name="M:Centido.Core.DbValue.GetDateTime(System.Object)">
            <summary>
              Converts a database column value to a datetime.
            </summary>
            <param name = "dbValue">The database value.</param>
            <returns>Returns the converted datetime value or null.</returns>
        </member>
        <member name="M:Centido.Core.DbValue.GetDateTime(Centido.Core.ColumnValue)">
            <summary>
              Converts a database column value to a datetime.
            </summary>
            <param name="columnValue">The database column value.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnValue"/> is null.</exception>
            <returns>Returns the converted datetime value or null.</returns>
        </member>
        <member name="M:Centido.Core.DbValue.GetDateTime(System.Data.Common.DbDataReader,System.String)">
            <summary>
              Retrieves a parameter value and converts it to a datetime.
            </summary>
            <param name="reader">The database reader.</param>
            <param name="parameterName">The name of the parameter.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="reader"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="parameterName"/> is null.</exception>
            <returns>Returns the converted datetime value.</returns>
        </member>
        <member name="M:Centido.Core.DbValue.GetDecimal(System.Object)">
            <summary>
              Converts a database column value to a decimal.
            </summary>
            <param name = "dbValue">The database value.</param>
            <returns>Returns the converted decimal value or null.</returns>
        </member>
        <member name="M:Centido.Core.DbValue.GetDecimal(Centido.Core.ColumnValue)">
            <summary>
              Converts a database column value to a decimal.
            </summary>
            <param name="columnValue">The database column value.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnValue"/> is null.</exception>
            <returns>Returns the converted decimal value or null.</returns>
        </member>
        <member name="M:Centido.Core.DbValue.GetDecimal(System.Data.Common.DbDataReader,System.String)">
            <summary>
              Retrieves a parameter value and converts it to a decimal.
            </summary>
            <param name="reader">The database reader.</param>
            <param name="parameterName">The name of the parameter.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="reader"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="parameterName"/> is null.</exception>
            <returns>Returns the converted decimal value.</returns>
        </member>
        <member name="M:Centido.Core.DbValue.GetGuid(System.Object)">
            <summary>
              Converts a database column value to a guid.
            </summary>
            <param name = "dbValue">The database value.</param>
            <returns>Returns the converted guid value or null.</returns>
        </member>
        <member name="M:Centido.Core.DbValue.GetGuid(Centido.Core.ColumnValue)">
            <summary>
              Converts a database column value to a guid.
            </summary>
            <param name="columnValue">The database column value.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnValue"/> is null.</exception>
            <returns>Returns the converted guid value or null.</returns>
        </member>
        <member name="M:Centido.Core.DbValue.GetGuid(System.Data.Common.DbDataReader,System.String)">
            <summary>
              Retrieves a parameter value and converts it to a guid.
            </summary>
            <param name="reader">The database reader.</param>
            <param name="parameterName">The name of the parameter.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="reader"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="parameterName"/> is null.</exception>
            <returns>Returns the converted guid value.</returns>
        </member>
        <member name="M:Centido.Core.DbValue.GetTimeSpan(System.Object)">
            <summary>
              Converts a database column value to a timespan.
            </summary>
            <param name = "dbValue">The database value.</param>
            <returns>Returns the converted timespan value or null.</returns>
        </member>
        <member name="M:Centido.Core.DbValue.GetTimeSpan(Centido.Core.ColumnValue)">
            <summary>
              Converts a database column value to a timespan.
            </summary>
            <param name="columnValue">The database column value.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnValue"/> is null.</exception>
            <returns>Returns the converted timespan value or null.</returns>
        </member>
        <member name="M:Centido.Core.DbValue.GetTimeSpan(System.Data.Common.DbDataReader,System.String)">
            <summary>
              Retrieves a parameter value and converts it to a timespan.
            </summary>
            <param name="reader">The database reader.</param>
            <param name="parameterName">The name of the parameter.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="reader"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="parameterName"/> is null.</exception>
            <returns>Returns the converted timespan value.</returns>
        </member>
        <member name="M:Centido.Core.DbValue.GetDbValue(System.Object)">
            <summary>
              Get db value
            </summary>
            <param name = "dbValue">Value</param>
            <returns>Db value</returns>
        </member>
        <member name="T:Centido.Core.ColumnValue">
             <summary>
               A table column value.
             </summary>
             <remarks>This is a helper class to use when selecting, inserting and updating rows with
             the methods of the <see cref="T:Centido.Core.Table"/> class.</remarks>
             <example>
               The following example shows how to insert, select and update rows using this helper class.
             <code>
                 using System;
                 using Centido.Core;
             
                 class Sample
                 {
                     static void Main()
                     {
                         var domainConfig = new DomainConfiguration()
                         {
                             DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                             DbProviderName = "System.Data.SqlClient"
                         };
                     
                         var domain = Domain.Build(domainConfig);
                     
                         domain.DeleteAll();
                         
                         //Adding a new table
                         var table = domain.AddTable("students");
                         
                         //Adding some table columns
                         var nameColumn = table.AddColumn("name", ColumnType.String) as StringColumn;
                         nameColumn.IsNotNull = true;
                         nameColumn.IsNotEmpty = true;
                         nameColumn.MaxLength = 64;
             
                         var birthdayColumn = table.AddColumn("birthday", ColumnType.DateTime) as DateTimeColumn;
                         birthdayColumn.IsNotNull = true;
             
                         //Populating the table with data
                         table.GrantAll();
            
                         var id = table.InsertRow(nameColumn.Value("John Smith"), birthdayColumn.Value(DateTime.Now.AddYears(-30)));
                         
                         //Reading the inserted values
                         var surname = nameColumn.EmptyValue();
                         var birthday = birthdayColumn.EmptyValue();
             
                         table.ReadRow(id, surname, birthday);
             
                         Console.WriteLine("After insert: surname = {0}, birthday = {1}", surname.GetString(), birthday.GetDateTime());
             
                         //Updating the surname and the birthday of the student
                         table.UpdateRow(id, nameColumn.Value("Mary Sue"), birthdayColumn.Value(DateTime.Now.AddYears(-15)));
             
                         //Reading the updated values
                         surname = nameColumn.EmptyValue();
                         birthday = birthdayColumn.EmptyValue();
             
                         table.ReadRow(id, surname, birthday);
             
                         Console.WriteLine("After update: surname = {0}, birthday = {1}", surname.GetString(), birthday.GetDateTime());
                     }
                 }
             </code>
             </example>
        </member>
        <member name="F:Centido.Core.ColumnValue._column">
            <summary>
              The table column.
            </summary>
        </member>
        <member name="M:Centido.Core.ColumnValue.#ctor(Centido.Core.Column,System.Object)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.ColumnValue"/> class
              for the specified table column id and table column value.
            </summary>
            <param name="column">The parent table column.</param>
            <param name="value">The table column value.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="column"/> is null.</exception>
        </member>
        <member name="P:Centido.Core.ColumnValue.Column">
            <summary>
              Gets the parent table column.
            </summary>
        </member>
        <member name="P:Centido.Core.ColumnValue.ColumnName">
            <summary>
              Gets the parent column name.
            </summary>
        </member>
        <member name="P:Centido.Core.ColumnValue.Value">
            <summary>
              Gets or sets the column value.
            </summary>
        </member>
        <member name="T:Centido.Core.ConnectionStringBuilder">
            <summary>
              Connection string builder
            </summary>
        </member>
        <member name="F:Centido.Core.ConnectionStringBuilder._dbName">
            <summary>
              Db name
            </summary>
        </member>
        <member name="F:Centido.Core.ConnectionStringBuilder._portNumber">
            <summary>
              Server port number
            </summary>
        </member>
        <member name="F:Centido.Core.ConnectionStringBuilder._serverLocation">
            <summary>
              Server location
            </summary>
        </member>
        <member name="F:Centido.Core.ConnectionStringBuilder._userName">
            <summary>
              User name
            </summary>
        </member>
        <member name="F:Centido.Core.ConnectionStringBuilder._userPassword">
            <summary>
              User password
            </summary>
        </member>
        <member name="M:Centido.Core.ConnectionStringBuilder.Build">
            <summary>
              Build connection string
            </summary>
            <returns></returns>
        </member>
        <member name="M:Centido.Core.ConnectionStringBuilder.Parse(System.String)">
            <summary>
              Parse connection string
            </summary>
            <param name = "connectionString">Connection string</param>
        </member>
        <member name="M:Centido.Core.ConnectionStringBuilder.ParseStringParameter(System.String,System.String)">
            <summary>
              Parse string parameter value from the connection string
            </summary>
            <param name = "connectionString">Connection string</param>
            <param name = "parameterName">Parameter name</param>
            <returns>Parameter value</returns>
        </member>
        <member name="M:Centido.Core.ConnectionStringBuilder.ParseIntegerParameter(System.String,System.String)">
            <summary>
              Parse integer parameter value from the connection string
            </summary>
            <param name = "connectionString">Connection string</param>
            <param name = "parameterName">Parameter name</param>
            <returns>Parameter value</returns>
        </member>
        <member name="M:Centido.Core.ConnectionStringBuilder.ParseBoolParameter(System.String,System.String)">
            <summary>
              Parse bool parameter value from the connection string
            </summary>
            <param name = "connectionString">Connection string</param>
            <param name = "parameterName">Parameter name</param>
            <returns>Parameter value</returns>
        </member>
        <member name="M:Centido.Core.ConnectionStringBuilder.CreateNew">
            <summary>
              Creates a new connection string builder of the current type.
            </summary>
            <returns>Returns a new connection string builder that has the same type
            as the current one.</returns>
        </member>
        <member name="P:Centido.Core.ConnectionStringBuilder.DbProviderTypeName">
            <summary>
              Db provider type name
            </summary>
        </member>
        <member name="P:Centido.Core.ConnectionStringBuilder.Host">
            <summary>
              Server location
            </summary>
        </member>
        <member name="P:Centido.Core.ConnectionStringBuilder.PortNumber">
            <summary>
              Server port number
            </summary>
        </member>
        <member name="P:Centido.Core.ConnectionStringBuilder.DbName">
            <summary>
              Db name
            </summary>
        </member>
        <member name="P:Centido.Core.ConnectionStringBuilder.UserName">
            <summary>
              User name
            </summary>
        </member>
        <member name="P:Centido.Core.ConnectionStringBuilder.UserPassword">
            <summary>
              User password
            </summary>
        </member>
        <member name="T:Centido.Core.Dto.TextColumnDto">
            <summary>
              A data transfering object for a text table column.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.TextColumnDto.XmlTag">
            <summary>
              The name of the xml tag that is used to store this object.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.TextColumnDto.CurrentXmlSchemaVersion">
            <summary>
              The current xml schema version.
            </summary>
        </member>
        <member name="M:Centido.Core.Dto.TextColumnDto.GetSchema">
            <summary>
              This method is reserved and should not be used. When implementing the IXmlSerializable interface, you should return null (Nothing in Visual Basic) from this method, and instead, if specifying a custom schema is required, apply the <see cref="T:System.Xml.Serialization.XmlSchemaProviderAttribute"/> to the class.
            </summary>
            <returns>
              An <see cref="T:System.Xml.Schema.XmlSchema"/> that describes the XML representation of the object that is produced by the <see cref="M:System.Xml.Serialization.IXmlSerializable.WriteXml(System.Xml.XmlWriter)"/> method and consumed by the <see cref="M:System.Xml.Serialization.IXmlSerializable.ReadXml(System.Xml.XmlReader)"/> method.
            </returns>
        </member>
        <member name="M:Centido.Core.Dto.TextColumnDto.ReadXml(System.Xml.XmlReader)">
            <summary>
              Generates an object from its XML representation.
            </summary>
            <param name="reader">The <see cref="T:System.Xml.XmlReader"/> stream from which the object is deserialized. 
            </param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="reader"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.TextColumnDto.WriteXml(System.Xml.XmlWriter)">
            <summary>
              Converts an object into its XML representation.
            </summary>
            <param name="writer">The <see cref="T:System.Xml.XmlWriter"/> stream to which the object is serialized. 
            </param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="writer"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.TextColumnDto.CopyTo(Centido.Core.TextColumn)">
            <summary>
              Copies the properties of the data transfer object to the
            specified text column.
            </summary>
            <param name="textColumn">The text column.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="textColumn"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.TextColumnDto.CreateFrom(Centido.Core.TextColumn)">
            <summary>
              Creates a data transfer object for the specified text column.
            </summary>
            <param name="textColumn">The specified text column.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="textColumn"/> is null.</exception>
            <returns>Returns the data transfer object for the specified text column.</returns>
        </member>
        <member name="T:Centido.Core.Dto.BigIntColumnDto">
            <summary>
              A data transfering object for a big integer table column.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.BigIntColumnDto.XmlTag">
            <summary>
              The name of the xml tag that is used to store this object.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.BigIntColumnDto.CurrentXmlSchemaVersion">
            <summary>
              The current xml schema version.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.BigIntColumnDto.DefaultValueTag">
            <summary>
              The name of the xml tag that is used to store the column default value.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.BigIntColumnDto.MaximumTag">
            <summary>
              The name of the xml tag that is used to store the column maximum value.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.BigIntColumnDto.MinimumTag">
            <summary>
              The name of the xml tag that is used to store the column minimum value.
            </summary>
        </member>
        <member name="M:Centido.Core.Dto.BigIntColumnDto.GetSchema">
            <summary>
              This method is reserved and should not be used. When implementing the IXmlSerializable interface, you should return null (Nothing in Visual Basic) from this method, and instead, if specifying a custom schema is required, apply the <see cref="T:System.Xml.Serialization.XmlSchemaProviderAttribute"/> to the class.
            </summary>
            <returns>
              An <see cref="T:System.Xml.Schema.XmlSchema"/> that describes the XML representation of the object that is produced by the <see cref="M:System.Xml.Serialization.IXmlSerializable.WriteXml(System.Xml.XmlWriter)"/> method and consumed by the <see cref="M:System.Xml.Serialization.IXmlSerializable.ReadXml(System.Xml.XmlReader)"/> method.
            </returns>
        </member>
        <member name="M:Centido.Core.Dto.BigIntColumnDto.ReadXml(System.Xml.XmlReader)">
            <summary>
              Generates an object from its XML representation.
            </summary>
            <param name="reader">The <see cref="T:System.Xml.XmlReader"/> stream from which the object is deserialized. 
            </param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="reader"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.BigIntColumnDto.WriteXml(System.Xml.XmlWriter)">
            <summary>
              Converts an object into its XML representation.
            </summary>
            <param name="writer">The <see cref="T:System.Xml.XmlWriter"/> stream to which the object is serialized. 
            </param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="writer"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.BigIntColumnDto.CopyTo(Centido.Core.BigIntColumn)">
            <summary>
              Copies the properties of the data transfer object to the
            specified big integer column.
            </summary>
            <param name="bigIntColumn">The big integer column.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="bigIntColumn"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.BigIntColumnDto.CreateFrom(Centido.Core.BigIntColumn)">
            <summary>
              Creates a data transfer object for the specified big integer column.
            </summary>
            <param name="bigIntColumn">The specified big integer column.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="bigIntColumn"/> is null.</exception>
            <returns>Returns the data transfer object for the specified big integer column.</returns>
        </member>
        <member name="P:Centido.Core.Dto.BigIntColumnDto.DefaultValue">
            <summary>
              Gets or sets the column default value.
            </summary>
        </member>
        <member name="P:Centido.Core.Dto.BigIntColumnDto.Maximum">
            <summary>
              Gets or sets the column maximum value.
            </summary>
        </member>
        <member name="P:Centido.Core.Dto.BigIntColumnDto.Minimum">
            <summary>
              Gets or sets the column minimum value.
            </summary>
        </member>
        <member name="T:Centido.Core.DomainConfiguration">
            <summary>
              Domain configuration parameters used to initialize instances of the <see cref="T:Centido.Core.Domain"/> class.
            </summary>
            <seealso cref="T:Centido.Core.Domain"/>
            <remarks>
              Some of the parameters are required to build an instance of the <see cref="T:Centido.Core.Domain"/> class.
              They are the connection string and the domain provider name. If Oracle database is used, specifying the schema
              name is also necessary. If parameter values are loaded from the configuration file,
              then the domain name is used to find the corresponding domain parameters in the domain configuration section.
            </remarks>
            <example>
              The following code creates an instance of the <see cref="T:Centido.Core.DomainConfiguration"/> class
              and builds a domain.
              <code>
                using System;
                using Centido.Core;
            
                class DomainBuildSample
                {
                    static void Main()
                    {
                        var config = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(config);
                    
                        Console.WriteLine(domain.DbName);
                    }
                } 
              </code>
              The following example demonstrates how to load domain parameters from the configuration file.
              <code>
                using System;
                using Centido.Core;
            
                class DomainBuildSample
                {
                    static void Main()
                    {
                        var config = DomainConfiguration().Load("MyDomain");
                    
                        var domain = Domain.Build(config);
                    
                        Console.WriteLine(domain.DbName);
                    }
                } 
              </code>
              And this is the corresponding content of the configuration file.
              <code>
                &lt;configuration&gt;
                    &lt;configSections&gt;
                        &lt;section name="Centido.Core.Configuration" type="Centido.Core.Configuration.CoreConfigurationSection, Centido.Core" /&gt;  
                    &lt;/configSections&gt;
                    &lt;Centido.Core.Configuration&gt;
                        &lt;domains&gt;
                            &lt;add name="MyDomain" dbProvider="System.Data.SqlClient" dbConnection="Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;"/&gt;
                        &lt;/domains&gt;
                    &lt;/Centido.Core.Configuration&gt;
                &lt;/configuration&gt;
              </code>
            </example>
        </member>
        <member name="F:Centido.Core.DomainConfiguration.DefaultDomainName">
            <summary>
              The default domain name.
            </summary>
        </member>
        <member name="F:Centido.Core.DomainConfiguration.DefaultDbProviderName">
            <summary>
              The default database provider name.
            </summary>
        </member>
        <member name="F:Centido.Core.DomainConfiguration._dbConnectionString">
            <summary>
              The database connection string.
            </summary>
        </member>
        <member name="F:Centido.Core.DomainConfiguration._dbProviderName">
            <summary>
              The database provider name.
            </summary>
        </member>
        <member name="F:Centido.Core.DomainConfiguration._dbSchemaName">
            <summary>
              The database schema name.
            </summary>
        </member>
        <member name="F:Centido.Core.DomainConfiguration._domainName">
            <summary>
              The domain name.
            </summary>
        </member>
        <member name="M:Centido.Core.DomainConfiguration.Load(System.String)">
            <summary>
              Loads domain parameters from the configuration file searching for the specified domain name.
            </summary>
            <param name="domainName">The specified domain name.</param>
            <returns>Returns an instance of the <see cref="T:Centido.Core.DomainConfiguration"/> class with all parameters set
              from the corresponding values in the configuration file.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="domainName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="domainName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when no domain with the specified name was found.</exception>
        </member>
        <member name="M:Centido.Core.DomainConfiguration.Load(System.String,System.String)">
            <summary>
              Loads domain parameters for the specified domain name from the configuration file section with the specified name.
            </summary>
            <param name="domainName">The specified domain name.</param>
            <param name="sectionName">The specified configuration section name.</param>
            <returns>Returns an instance of the <see cref="T:Centido.Core.DomainConfiguration"/> class with all parameters set
              from the corresponding values in the configuration file.</returns>
            <example>
              The following example shows how to load domain parameters from the configuration
              file specifying the non-default section name.
              <code>
                using System;
                using Centido.Core;
            
                class DomainBuildSample
                {
                    static void Main()
                    {
                        var config = DomainConfiguration().Load("MyDomain", "ConfigSection");         
                        var domain = Domain.Build(config);
                    
                        Console.WriteLine(domain.DbName);
                    }
                } 
              </code>
              And this is the corresponding configuration file.
              <code>
                &lt;configuration&gt;
                    &lt;configSections&gt;
                        &lt;section name="MyConfigSection" type="Centido.Core.Configuration.CoreConfigurationSection, Centido.Core" /&gt; 
                    &lt;/configSections&gt;
                    &lt;MyConfigSection&gt;
                        &lt;domains&gt;
                            &lt;add name="MyDomain" dbProvider="System.Data.SqlClient" dbConnection="Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;"/&gt;
                        &lt;/domains&gt;
                    &lt;/MyConfigSection&gt;
                &lt;/configuration&gt;
              </code>
            </example>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="domainName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="domainName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="sectionName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Throw when the value  of <paramref name="sectionName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when no domain with the specified name was found.</exception>
            <exception cref="T:System.ArgumentException">Thrown when no section with the specified name was found in the configuration file.</exception>
        </member>
        <member name="M:Centido.Core.DomainConfiguration.CreateCopy">
            <summary>
              Creates a copy of domain parameters.
            </summary>
            <returns>Returns an instance of the <see cref="T:Centido.Core.DomainConfiguration"/> class
              that has all property values equal to the property values in the current instance.</returns>
        </member>
        <member name="P:Centido.Core.DomainConfiguration.DomainName">
            <summary>
              The domain name.
            </summary>
            <remarks>
              This property specifies the name of the item in the collection of domain parameters when loading from the configuration file.
            </remarks>
            <exception cref="T:System.ArgumentNullException">Thrown when trying to set this property to null.</exception>
            <example>
              The following example shows how to load domain parameters from the configuration file specifying the domain name.
              <code>
                using System;
                using Centido.Core;
            
                class DomainBuildSample
                {
                    static void Main()
                    {
                        var config = DomainConfiguration().Load("MyDomain1");
                    
                        var domain = Domain.Build(config);
                    
                        Console.WriteLine(domain.DbName);
                    }
                } 
              </code>
              And this is the corresponding content of the configuration file.
              <code>
                &lt;configuration&gt;
                    &lt;configSections&gt;
                        &lt;section name="Centido.Core.Configuration" type="Centido.Core.Configuration.CoreConfigurationSection, Centido.Core" /&gt;  
                    &lt;/configSections&gt;
                    &lt;Centido.Core.Configuration&gt;
                        &lt;domains&gt;
                            &lt;add name="MyDomain1" dbProvider="System.Data.SqlClient" dbConnection="Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;"/&gt;
                            &lt;add name="MyDomain2" dbProvider="System.Data.SqlClient" dbConnection="Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=another_user;Password=P@ssw0rd;"/&gt;
                        &lt;/domains&gt; 
                    &lt;/Centido.Core.Configuration&gt;
                &lt;/configuration&gt;
              </code>
            </example>
        </member>
        <member name="P:Centido.Core.DomainConfiguration.DbProviderName">
            <summary>
              The database provider invariant name.
            </summary>
            <remarks>
              This property specifies the invariant name of the database provider as registered in ADO.NET.
            </remarks>
            <exception cref="T:System.ArgumentException">Thrown when trying to set this property to null.</exception>
        </member>
        <member name="P:Centido.Core.DomainConfiguration.DbConnectionString">
            <summary>
              The database connection string.
            </summary>
            <remarks>
              The database connection string format is specific to the database provider used.
              A properly formatted connection string can be built using some of the connection string builders.
            </remarks>
            <example>
              The following example shows how to build a connection string using one of the connection string builders.
              <code>
                using System;
                using Centido.Core;
            
                class DomainBuildSample
                {
                    static void Main()
                    {
                        var config = new DomainConfiguration()
                        {
                            DbConnectionString = new SqlServerConnectionStringBuilder()
                            {
                                Host = @".\SQLEXPRESS",
                                DbName = "MyDb",
                                UserName = "admin",
                                UserPassword = "P@ssw0rd"
                            }.Build(),
                        DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(config);
                    
                        Console.WriteLine(domain.DbName);
                    }
                }
              </code>
            </example>
            <exception cref="T:System.ArgumentException">Thrown when trying to set this property to null.</exception>
        </member>
        <member name="P:Centido.Core.DomainConfiguration.DbSchemaName">
            <summary>
              The database schema name where the metadata was installed.
            </summary>
            <remarks>
              This property is required to set when using Oracle database.
            </remarks>
            <exception cref="T:System.ArgumentException">Thrown when trying to set this property to null.</exception>
        </member>
        <member name="T:Centido.Core.Configuration.DomainCollection">
            <summary>
              Collection of domain parameters in a data access application section
            </summary>
        </member>
        <member name="M:Centido.Core.Configuration.DomainCollection.GetElementKey(System.Configuration.ConfigurationElement)">
            <summary>
              Get configuration element key
            </summary>
            <param name = "element">Configuration element</param>
            <returns>Key of the specified configuration element</returns>
        </member>
        <member name="M:Centido.Core.Configuration.DomainCollection.CreateNewElement">
            <summary>
              Create new configuration element
            </summary>
            <returns>New configuration element</returns>
        </member>
        <member name="P:Centido.Core.Configuration.DomainCollection.Item(System.Int32)">
            <summary>
              Get configuration collection element by index
            </summary>
            <param name = "index">Element index</param>
            <returns>Element with the specified index</returns>
        </member>
        <member name="T:Centido.Core.SqlServerInstaller">
            <summary>
              Sql server metadata installer
            </summary>
        </member>
        <member name="M:Centido.Core.SqlServerInstaller.#ctor">
            <summary>
            Initializes a new instance of the <see cref="T:Centido.Core.SqlServerInstaller"/> class.
            </summary>
        </member>
        <member name="M:Centido.Core.SqlServerInstaller.#ctor(System.String,System.String)">
            <summary>
            Initializes a new instance of the <see cref="T:Centido.Core.SqlServerInstaller"/> class.
            </summary>
            <param name="dbConnectionString">The database connection string.</param>
            <param name="dbProviderName">The database provider invariant name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="dbConnectionString"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="dbProviderName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="dbConnectionString"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="dbProviderName"/> is an empty string.</exception>        
        </member>
        <member name="M:Centido.Core.SqlServerInstaller.InstallSchema">
            <summary>
              Installs the metadata schema.
            </summary>
            <returns>Returns the current installer.</returns>
        </member>
        <member name="M:Centido.Core.SqlServerInstaller.InstallLogic">
            <summary>
              Installs the metadata logic.
            </summary>
            <returns>Returns the current installer.</returns>
        </member>
        <member name="M:Centido.Core.SqlServerInstaller.CreateAppUser(System.String,System.String,System.String)">
            <summary>
              Creates an application user.
            </summary>
            <param name="userName">The application user name.</param>
            <param name="userPassword">The application user password.</param>
            <param name="dbName">The application user database name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="userName"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="userPassword"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="dbName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="userName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="userPassword"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="dbName"/> is an empty string.</exception>
            <returns>Returns the current installer.</returns>
        </member>
        <member name="M:Centido.Core.SqlServerInstaller.DropUser(System.String,System.String)">
            <summary>
              Drops the specified database user.
            </summary>
            <param name="userName">The user name.</param>
            <param name="dbName">The application database name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="userName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="userName"/> is an empty string.</exception>
            <returns>Returns the current installer.</returns>
        </member>
        <member name="M:Centido.Core.SqlServerInstaller.GetPrincipals">
            <summary>
              Gets the list of database principal names.
            </summary>
            <returns>Returns the list of database principal names.</returns>
        </member>
        <member name="M:Centido.Core.SqlServerInstaller.Uninstall">
            <summary>
              Uninstalls the metadata.
            </summary>
        </member>
        <member name="M:Centido.Core.SqlServerInstaller.ExecuteScript(System.String)">
            <summary>
              Executes an sql script.
            </summary>
            <param name = "sqlScript">The text of the sql script.</param>
        </member>
        <member name="P:Centido.Core.SqlServerInstaller.ProductName">
            <summary>
              Gets the database product name.
            </summary>
        </member>
        <member name="P:Centido.Core.SqlServerInstaller.SchemaVersion">
            <summary>
              Gets the version of the metadata schema.
            </summary>
        </member>
        <member name="P:Centido.Core.SqlServerInstaller.LogicVersion">
            <summary>
              Gets the version of the metadata logic.
            </summary>
        </member>
        <member name="T:Centido.Core.Dto.TimeSpanColumnDto">
            <summary>
              A data transfering object for a timespan table column.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.TimeSpanColumnDto.XmlTag">
            <summary>
              The name of the xml tag that is used to store this object.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.TimeSpanColumnDto.CurrentXmlSchemaVersion">
            <summary>
              The current xml schema version.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.TimeSpanColumnDto.DefaultValueTag">
            <summary>
              The name of the xml tag that is used to store the column default value.
            </summary>
        </member>
        <member name="M:Centido.Core.Dto.TimeSpanColumnDto.GetSchema">
            <summary>
              This method is reserved and should not be used. When implementing the IXmlSerializable interface, you should return null (Nothing in Visual Basic) from this method, and instead, if specifying a custom schema is required, apply the <see cref="T:System.Xml.Serialization.XmlSchemaProviderAttribute"/> to the class.
            </summary>
            <returns>
              An <see cref="T:System.Xml.Schema.XmlSchema"/> that describes the XML representation of the object that is produced by the <see cref="M:System.Xml.Serialization.IXmlSerializable.WriteXml(System.Xml.XmlWriter)"/> method and consumed by the <see cref="M:System.Xml.Serialization.IXmlSerializable.ReadXml(System.Xml.XmlReader)"/> method.
            </returns>
        </member>
        <member name="M:Centido.Core.Dto.TimeSpanColumnDto.ReadXml(System.Xml.XmlReader)">
            <summary>
              Generates an object from its XML representation.
            </summary>
            <param name="reader">The <see cref="T:System.Xml.XmlReader"/> stream from which the object is deserialized. 
            </param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="reader"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.TimeSpanColumnDto.WriteXml(System.Xml.XmlWriter)">
            <summary>
              Converts an object into its XML representation.
            </summary>
            <param name="writer">The <see cref="T:System.Xml.XmlWriter"/> stream to which the object is serialized. 
            </param>
        </member>
        <member name="M:Centido.Core.Dto.TimeSpanColumnDto.CopyTo(Centido.Core.TimeSpanColumn)">
            <summary>
              Copies the properties of the data transfer object to the
            specified timespan column.
            </summary>
            <param name="timeSpanColumn">The timespan column.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="timeSpanColumn"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.TimeSpanColumnDto.CreateFrom(Centido.Core.TimeSpanColumn)">
            <summary>
              Creates a data transfer object for the specified timespan column.
            </summary>
            <param name="timeSpanColumn">The specified timespan column.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="timeSpanColumn"/> is null.</exception>
            <returns>Returns the data transfer object for the specified timespan column.</returns>
        </member>
        <member name="P:Centido.Core.Dto.TimeSpanColumnDto.DefaultValue">
            <summary>
              Gets or sets the column default value.
            </summary>
        </member>
        <member name="T:Centido.Core.ColumnType">
            <summary>
              Table column type.
            </summary>
        </member>
        <member name="F:Centido.Core.ColumnType.String">
            <summary>
              A string column.
            </summary>
        </member>
        <member name="F:Centido.Core.ColumnType.SmallInteger">
            <summary>
              A small integer column (int16).
            </summary>
        </member>
        <member name="F:Centido.Core.ColumnType.Reference">
            <summary>
              A reference column.
            </summary>
        </member>
        <member name="F:Centido.Core.ColumnType.Decimal">
            <summary>
              A numeric column (decimal).
            </summary>
        </member>
        <member name="F:Centido.Core.ColumnType.Integer">
            <summary>
              An integer column (int32).
            </summary>
        </member>
        <member name="F:Centido.Core.ColumnType.Enumeration">
            <summary>
              An enumeration column.
            </summary>
        </member>
        <member name="F:Centido.Core.ColumnType.DateTime">
            <summary>
              A DateTime column (without time zone).
            </summary>
        </member>
        <member name="F:Centido.Core.ColumnType.Boolean">
            <summary>
              A boolean column.
            </summary>
        </member>
        <member name="F:Centido.Core.ColumnType.Binary">
            <summary>
              A binary column.
            </summary>
        </member>
        <member name="F:Centido.Core.ColumnType.BigInteger">
            <summary>
              A big integer column (int64).
            </summary>
        </member>
        <member name="F:Centido.Core.ColumnType.TimeSpan">
            <summary>
              A timespan column.
            </summary>
        </member>
        <member name="F:Centido.Core.ColumnType.Guid">
            <summary>
              A guid column.
            </summary>
        </member>
        <member name="F:Centido.Core.ColumnType.Text">
            <summary>
              A text column.
            </summary>
        </member>
        <member name="T:Centido.Core.Role">
            <summary>
              A security role.
            </summary>
        </member>
        <member name="F:Centido.Core.Role._domain">
            <summary>
              The current domain.
            </summary>
        </member>
        <member name="F:Centido.Core.Role._roleName">
            <summary>
              The role name.
            </summary>
        </member>
        <member name="F:Centido.Core.Role._displayname">
            <summary>
              The display name of the role.
            </summary>
        </member>
        <member name="M:Centido.Core.Role.#ctor(System.String,Centido.Core.Domain)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.Role"/> class
            for the specified role name and the specified domain.
            </summary>
            <param name="roleName">The role name.</param>
            <param name="domain">The current domain.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="roleName"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="domain"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="roleName"/> is an empty string.</exception>
        </member>
        <member name="M:Centido.Core.Role.Delete">
            <summary>
              Deletes the current role.
            </summary>
            <remarks>The current user has to have the permission to change security settings in order to execute this function.</remarks>
            <example>
              The following example shows how a security role is deleted.
            <code>
                    using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a role
                        var role = domain.AddRole("my_role");
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
            
                        //Granting all permission on the table to the role
                        table.GrantAll(role);
            
                        //Adding a user to the role
                        role.AddUser(domain.CurrentUser);
            
                        //Adding another role to the role
                        var childRole = domain.AddRole("child_role");
                        role.AddRole(childRole);
            
                        //Adding the role to another role
                        var parentRole = domain.AddRole("parent_role");
                        parentRole.AddRole(role);
            
                        Console.WriteLine("Table: permission count = {0}", table.Permissions.Count());
                        Console.WriteLine("Current user: role count = {0}", domain.CurrentUser.Roles.Count());
                        Console.WriteLine("Child role: parent role count = {0}", childRole.ParentRoles.Count());
                        Console.WriteLine("Parent role: child role count = {0}", parentRole.ChildRoles.Count());
            
                        Console.WriteLine("Deleting the role");
            
                        role.Delete();
            
                        Console.WriteLine("Table: permission count = {0}", table.Permissions.Count());
                        Console.WriteLine("Current user: role count = {0}", domain.CurrentUser.Roles.Count());
                        Console.WriteLine("Child role: parent role count = {0}", childRole.ParentRoles.Count());
                        Console.WriteLine("Parent role: child role count = {0}", parentRole.ChildRoles.Count());
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Role.Exists">
            <summary>
              Checks the existence of the role.
            </summary>
            <remarks>The current user has to have the permission to change the security settings in order
            to execute this function.</remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user
            has no permission to execute this function.</exception>
            <returns>Returns true if the role still exists; otherwise, returns false.</returns>
            <example>
              The following example shows how to cheack the existence of a role.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a role
                        var role = domain.AddRole("my_role");
                     
                        Console.WriteLine("Role exists = {0}", role.Exists());
            
                        Console.WriteLine("Deleting the role");
            
                        role.Delete();
            
                        Console.WriteLine("Role exists = {0}", role.Exists());
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Role.AddUser(Centido.Core.IUser)">
            <summary>
              Adds the specified user to the current security role.
            </summary>
            <remarks>The current user has to have the permission to change security settings in order to execute this function.</remarks>
            <param name="user">The user to be added to the current security role.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="user"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the specified user was already added to the current security role.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following example shows how to add a user to a security role.
            <code>
                using System;
                using System.Data.Common;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a role
                        var role = domain.AddRole("my_role");
                     
                        //Creating a table
                        var table = domain.AddTable("my_table");
            
                        //Granting permissions on the table to the role
                        table.GrantAll(role);
            
                        //Trying to insert into the table without permissions
                        try
                        {
                            table.InsertRow();
                        }
                        catch(DbException)
                        {
                            Console.WriteLine("Cannot insert into the table without permissions");
                        }
            
                        //Adding the current user to the role
                        role.AddUser(domain.CurrentUser);
            
                        //Inserting into the table
                        table.InsertRow();
            
                        Console.WriteLine("The insert operation was successful");
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Role.AddUser(System.String)">
            <summary>
              Adds a user with the specified name to the current security role.
            </summary>
            <remarks>
            <para>The name of the user to be added to the current security role is lowered and trimmed.</para>
            <para>The current user has to have the permission to change security settings in order to execute this function.</para>
            </remarks>
            <param name="userName">The name of the user to be added to the current security role.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="userName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="userName"/> is an empty string.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when a user with the same name was already added to the current security role.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following example shows how to add a user with the specified name to a security role.
            <code>
                using System;
                using System.Data.Common;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a role
                        var role = domain.AddRole("my_role");
                     
                        //Creating a table
                        var table = domain.AddTable("my_table");
            
                        //Granting permissions on the table to the role
                        table.GrantAll(role);
            
                        //Trying to insert into the table without permissions
                        try
                        {
                            table.InsertRow();
                        }
                        catch(DbException)
                        {
                            Console.WriteLine("Cannot insert into the table without permissions");
                        }
            
                        //Adding the current user to the role
                        role.AddUser(domain.CurrentUser.Name);
            
                        //Inserting into the table
                        table.InsertRow();
            
                        Console.WriteLine("The insert operation was successful");
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Role.ContainsUser(Centido.Core.IUser)">
            <summary>
              Checks that the current security role contains the specified user.
            </summary>
            <remarks>
              The current user has to have the permission to change security settings in order
            to execute this function.
            </remarks>
            <param name="user">The specified user.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="user"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <returns>Returns true if the current security role contains the specified user;
            otherwise, false.</returns>
            <example>
               The following example shows how to check that a security role contains the specified user.
            <code>
                using System;
                using System.Data.Common;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a role
                        var role = domain.AddRole("my_role");
                     
                        //Creating a user
                        var user = domain.AddUser("my_user", "P@ssw0rd");
            
                        //Adding the user to the role
                        role.AddUser(user);
            
                        //Checking the role users
                        Console.WriteLine("The role contains 'my_user' = {0}", role.ContainsUser(user));
                        Console.WriteLine("The role contains the current user = {0}",
                            role.ContainsUser(domain.CurrentUser));
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Role.ContainsUser(System.String)">
            <summary>
              Checks that the current security role contains a user with the specified name.
            </summary>
            <remarks>
            <para>The name of the user is lowered and trimmed.</para>
            <para>The current user has to have the permission to change security settings in order
            to execute this function.</para>
            </remarks>
            <param name="userName">The name of the user.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="userName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="userName"/> is an empty string.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <returns>Returns true if the current security role contains a user with the specified name;
            otherwise, false.</returns>
            <example>
               The following example shows how to check that a security role contains a user with the specified name.
            <code>
                using System;
                using System.Data.Common;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a role
                        var role = domain.AddRole("my_role");
                     
                        //Creating a user
                        var user = domain.AddUser("my_user", "P@ssw0rd");
            
                        //Adding the user to the role
                        role.AddUser(user);
            
                        //Checking the role users
                        Console.WriteLine("The role contains 'my_user' = {0}", role.ContainsUser(user.Name));
                        Console.WriteLine("The role contains the current user = {0}",
                            role.ContainsUser(domain.CurrentUser.Name));
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Role.DeleteUser(Centido.Core.IUser)">
            <summary>
              Deletes the specified user from the current security role.
            </summary>
            <remarks>The current user has to have the permission to change security settings in order
            to execute this function.</remarks>
            <param name="user">The user to be deleted from the current security role.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="user"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current security role doesn't contain
            the specified user.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission
            to execute this function.</exception>
            <example>
              The following example shows how to delete the specified user from a security role.
            <code>
                using System;
                using System.Data.Common;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a role
                        var role = domain.AddRole("my_role");
                     
                        //Creating a table
                        var table = domain.AddTable("my_table");
            
                        //Granting table permission to the role
                        table.GrantAll(role);
            
                        //Adding the current user to the role
                        role.AddUser(domain.CurrentUser);
            
                        //Inserting into the table
                        table.InsertRow();
            
                        Console.WriteLine("The insert operation was successful");
            
                        //Deleting the current user from the role
                        role.DeleteUser(domain.CurrentUser);
            
                        try
                        {
                            table.InsertRow();
                        }
                        catch(DbException)
                        {
                            Console.WriteLine("The current user has no permission to insert into the table");
                        }
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Role.DeleteUser(System.String)">
            <summary>
              Deletes a user with the specified name from the current security role.
            </summary>
            <remarks>
            <para>The name of the user to be deleted from the current security role is lowered and trimmed.</para>
            <para>The current user has to have the permission to change security settings in order
            to execute this function.</para>
            </remarks>
            <param name="userName">The name of the user to be deleted from the current security role.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="userName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="userName"/> is an empty string.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current security role doesn't contain
            a user with the specified name.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission
            to execute this function.</exception>
            <example>
              The following example shows how to delete a user with the specified name from a security role.
            <code>
                using System;
                using System.Data.Common;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a role
                        var role = domain.AddRole("my_role");
                     
                        //Creating a table
                        var table = domain.AddTable("my_table");
            
                        //Granting table permission to the role
                        table.GrantAll(role);
            
                        //Adding the current user to the role
                        role.AddUser(domain.CurrentUser);
            
                        //Inserting into the table
                        table.InsertRow();
            
                        Console.WriteLine("The insert operation was successful");
            
                        //Deleting the current user from the role
                        role.DeleteUser(domain.CurrentUser.Name);
            
                        try
                        {
                            table.InsertRow();
                        }
                        catch(DbException)
                        {
                            Console.WriteLine("The current user has no permission to insert into the table");
                        }
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Role.AddRole(Centido.Core.Role)">
            <summary>
              Adds another security role to the current security role.
            </summary>
            <remarks>The current user has to have the permission to change security settings
            in order to execute this function.</remarks>
            <param name="roleToAdd">The security role to be added to the current security role.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="roleToAdd"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the security role was already added to the current security role.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when a cycle of security roles is formed.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following example shows how to add a security role to another security role.
            <code>
                using System;
                using System.Data.Common;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating two roles
                        var parentRole = domain.AddRole("parent_role");
                        var childRole = domain.AddRole("child_role");
                     
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        
                        //Granting table permissions to the parent role
                        table.GrantAll(parentRole);
            
                        //Adding the current user to the child role
                        childRole.AddUser(domain.CurrentUser);
            
                        try
                        {
                            table.InsertRow();
                        }
                        catch(DbException)
                        {
                            Console.WriteLine("The current user has no permission to insert into the table");
                        }
            
                        //Adding the child role to the parent one
                        parentRole.AddRole(childRole);
            
                        table.InsertRow();
            
                        Console.WriteLine("The insert operation was successful");
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Role.AddRole(System.String)">
            <summary>
              Adds a security role with the specified name to the current security role.
            </summary>
            <remarks>
            <para>The name of a security role to be added to the current security role is lowered
            and trimmed.</para>
            <para>The current user has to have the permission to change security settings
            in order to execute this function.</para></remarks>
            <param name="roleToAddName">The name of the security role to be added to the current security role.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="roleToAddName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="roleToAddName"/> is an empty string.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when a security role with the same name was already added to the current security role.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when a cycle of security roles is formed.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following example shows how to add a security role with the specified name to another security role.
            <code>
                using System;
                using System.Data.Common;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating two roles
                        var parentRole = domain.AddRole("parent_role");
                        var childRole = domain.AddRole("child_role");
                     
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        
                        //Granting table permissions to the parent role
                        table.GrantAll(parentRole);
            
                        //Adding the current user to the child role
                        childRole.AddUser(domain.CurrentUser);
            
                        try
                        {
                            table.InsertRow();
                        }
                        catch(DbException)
                        {
                            Console.WriteLine("The current user has no permission to insert into the table");
                        }
            
                        //Adding the child role to the parent one
                        parentRole.AddRole(childRole.Name);
            
                        table.InsertRow();
            
                        Console.WriteLine("The insert operation was successful");
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Role.ContainsRole(Centido.Core.Role)">
            <summary>
              Checks that the current security role contains the specified security role.
            </summary>
            <remarks>
            The current user has to have the permission to change security settings in order
            to execute this function.
            </remarks>
            <param name="role">The specified security role.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="role"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission
            to execute this function.</exception>
            <returns>Returns true if the current security role contains
            the specified security role; otherwise, false.</returns>
            <example>
              The following example shows how to check that a security role contains another security role.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating three roles
                        var parentRole = domain.AddRole("parent_role");
                        var childRole_1 = domain.AddRole("child_role_1");
                        var childRole_2 = domain.AddRole("child_role_2");
            
                        //Adding the first child role to the parent role
                        parentRole.AddRole(childRole_1);
                        
                        Console.WriteLine("Parent role contains the first child role = {0}",
                            parentRole.ContainsRole(childRole_1));
                        Console.WriteLine("Parent role contains the second child role = {0}",
                            parentRole.ContainsRole(childRole_2));
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Role.ContainsRole(System.String)">
            <summary>
              Checks that the current security role contains a security role with the specified name.
            </summary>
            <remarks>
            <para>The name of the security role is lowered and trimmed.</para>
            <para>The current user has to have the permission to change security settings in order
            to execute this function.</para>
            </remarks>
            <param name="roleName">The specified security role name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="roleName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="roleName"/> is an empty string.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission
            to execute this function/</exception>
            <returns>Returns true if the current security role contains
            a security role with the specified name; otherwise, false.</returns>
            <example>
              The following example shows how to check that a security role contains another security role.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating three roles
                        var parentRole = domain.AddRole("parent_role");
                        var childRole_1 = domain.AddRole("child_role_1");
                        var childRole_2 = domain.AddRole("child_role_2");
            
                        //Adding the first child role to the parent role
                        parentRole.AddRole(childRole_1);
                        
                        Console.WriteLine("Parent role contains the first child role = {0}",
                            parentRole.ContainsRole(childRole_1.Name));
                        Console.WriteLine("Parent role contains the second child role = {0}",
                            parentRole.ContainsRole(childRole_2.Name));
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Role.DeleteRole(Centido.Core.Role)">
            <summary>
              Deletes the specified security role from the current security role.
            </summary>
            <remarks>The current user has to have the permission to change security settings in order
            to execute this function.</remarks>
            <param name="roleToDelete">The security role to be deleted from the current security role.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="roleToDelete"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current security role
            doesn't have the specified security role.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission
            to execute this function.</exception>
            <example>
              The following example shows how to delete a security role from another one.
            <code>
                using System;
                using System.Data.Common;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating two roles
                        var parentRole = domain.AddRole("parent_role");
                        var childRole = domain.AddRole("child_role");
            
                        //Adding the child role to the parent one
                        parentRole.AddRole(childRole);
            
                        //Adding the current user to the child role
                        childRole.AddUser(domain.CurrentUser);
            
                        //Creating a table
                        var table = domain.AddTable("my_table");
            
                        //Granting table permission to the parent role
                        table.GrantAll(parentRole);
            
                        table.InsertRow();
            
                        Console.WriteLine("The insert operation was successful");
            
                        //Deleting the child role from the parent one
                        parentRole.DeleteRole(childRole);
            
                        try
                        {
                            table.InsertRow();
                        }
                        catch(DbException) 
                        {
                            Console.WriteLine("The current user has no insert permission on the table");
                        }
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Role.DeleteRole(System.String)">
            <summary>
              Deletes a security role with the specified name from the current security role.
            </summary>
            <remarks>
            <para>The name of the security role to be deleted from the current security role
            is lowered and trimmed.</para>
            <para>The current user has to have the permission to change security settings in order
            to execute this function.</para></remarks>
            <param name="roleToDeleteName">The name of the security role to be deleted from the current security role.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="roleToDeleteName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="roleToDeleteName"/> is an empty string.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current security role
            doesn't have a security role with the specified name.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission
            to execute this function.</exception>
            <example>
              The following example shows how to delete a security role from another one.
            <code>
                using System;
                using System.Data.Common;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating two roles
                        var parentRole = domain.AddRole("parent_role");
                        var childRole = domain.AddRole("child_role");
            
                        //Adding the child role to the parent one
                        parentRole.AddRole(childRole);
            
                        //Adding the current user to the child role
                        childRole.AddUser(domain.CurrentUser);
            
                        //Creating a table
                        var table = domain.AddTable("my_table");
            
                        //Granting table permission to the parent role
                        table.GrantAll(parentRole);
            
                        table.InsertRow();
            
                        Console.WriteLine("The insert operation was successful");
            
                        //Deleting the child role from the parent one
                        parentRole.DeleteRole(childRole.Name);
            
                        try
                        {
                            table.InsertRow();
                        }
                        catch(DbException) 
                        {
                            Console.WriteLine("The current user has no insert permission on the table");
                        }
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Role.ReadProperty(System.String)">
            <summary>
              Reads the current security role property.
            </summary>
            <param name = "propertyName">The property name.</param>
            <returns>Returns the property value.</returns>
        </member>
        <member name="M:Centido.Core.Role.WriteProperty(System.String,System.Object,System.Data.OdbcType)">
            <summary>
              Updates the current security role property.
            </summary>
            <param name = "propertyName">The property name.</param>
            <param name = "propertyValue">The property value.</param>
            <param name = "propertyType">The property database type.</param>
        </member>
        <member name="M:Centido.Core.Role.Refresh">
            <summary>
              Refreshes the properties of the role.
            </summary>
        </member>
        <member name="P:Centido.Core.Role.Domain">
            <summary>
              Gets the current domain.
            </summary>
        </member>
        <member name="P:Centido.Core.Role.DisplayName">
            <summary>
              Gets or sets the role display name.
            </summary>
            <remarks>The current user has to have the permission to change security settings in
            order to set this property.</remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to set this property.</exception>
            <example>
              The following example shows how to set the display name of a security role.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating two roles
                        domain.AddRole("first_role").DisplayName = "The first role";
                        domain.AddRole("second_role").DisplayName = "The second role";
            
                        foreach(var role in domain.Roles)
                        {
                            Console.WriteLine("Role: name = {0}, display name = {1}", role.Name, role.DisplayName);
                        }
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.Role.Users">
            <summary>
              Gets the users that were added to the security role.
            </summary>
            <remarks>The current user has to have the permission to change security settings in
            order to read this property.</remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no
            permission to read this property.</exception>
            <example>
              The following example shows how to get the users that were added to a security role.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating the role
                        var role = domain.AddRole("my_role");
            
                        //Creating a user
                        var user = domain.AddUser("my_user", "P@ssw0rd");
            
                        //Adding the new user and the current user the role
                        role.AddUser(user);
                        role.AddUser(domain.CurrentUser);
            
                        foreach(var u in role.Users)
                            Console.WriteLine("User in the role: name = {0}", u.Name);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.Role.ChildRoles">
            <summary>
              Gets the roles that were added in the current role.
            </summary>
            <remarks>The current user has to have the permission to change security settings in order to read this property.</remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to read this property.</exception>
            <example>
              The following example shows how to read the roles that were added in another role.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating the role
                        var role = domain.AddRole("my_role");
            
                        //Creating the child roles
                        var firstChildRole = domain.AddRole("first_child_role");
                        var secondChildRole = domain.AddRole("second_child_role");
            
                        role.AddRole(firstChildRole);
                        role.AddRole(secondChildRole);
            
                        foreach(var childRole in role.ChildRoles)
                            Console.WriteLine("Child role: name = {0}", childRole.Name);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.Role.ParentRoles">
            <summary>
              Gets the roles that contain the current role.
            </summary>
            <remarks>The current user has to have the permission to change security settings in order to read this property.</remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to read this property.</exception>
            <example>
              The following example shows how to read the roles that contain the current role.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating the role
                        var role = domain.AddRole("my_role");
            
                        //Creating the parent roles
                        var firstParentRole = domain.AddRole("first_parent_role");
                        var secondParentRole = domain.AddRole("second_parent_role");
            
                        firstParentRole.AddRole(role);
                        secondParentRole.AddRole(role);
            
                        foreach(var parentRole in role.ParentRoles)
                            Console.WriteLine("Parent role: name = {0}", parentRole.Name);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.Role.Principals">
            <summary>
              Gets the security principals that were added in the current role.
            </summary>
            <remarks>The current user has to have the permission to change security settings in order to read this property.</remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to read this property.</exception>
            <example>
              The following example shows how to get the security principals that were added in the current role.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating the role
                        var role = domain.AddRole("my_role");
            
                        //Adding some some child roles
                        var firstChildRole = domain.AddRole("first_child_role");
                        var secondChildRole = domain.AddRole("second_child_role");
            
                        role.AddRole(firstChildRole);
                        role.AddRole(secondChildRole);
            
                        //Adding some users
                        var user = domain.AddUser("first_user", "P@ssw0rd");
            
                        role.AddUser(user);
                        role.AddUser(domain.CurrentUser);
            
                        foreach(var principal in role.Principals)
                            Console.WriteLine("Principal: name = {0}", principal.Name);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.Role.TablePermissions">
            <summary>
              Gets the table permissions granted to the current role.
            </summary>
            <remarks>The current user has to have the permission to change security settings in order to read this property.</remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to read this property.</exception>
            <example>
              The following example shows how to get the table permissions granted to a security role.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a role
                        var role = domain.AddRole("my_role");
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
            
                        //Granting all permission on the table to the role
                        table.GrantAll(role);
            
                        foreach(var perm in role.TablePermissions)
                            Console.WriteLine("Role: table permission = {0}", perm.DataAction);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.Role.Name">
            <summary>
              Gets the role name.
            </summary>
        </member>
        <member name="T:Centido.Core.OracleClientConnectionStringBuilder">
            <summary>
              .Net oracle client connection string builder
            </summary>
        </member>
        <member name="F:Centido.Core.OracleClientConnectionStringBuilder.DefaultPersistSecurityInfo">
            <summary>
              Default PersistSecurityInfo
            </summary>
        </member>
        <member name="F:Centido.Core.OracleClientConnectionStringBuilder.DefaultUnicode">
            <summary>
              Default Unicode
            </summary>
        </member>
        <member name="F:Centido.Core.OracleClientConnectionStringBuilder.DefaultConnectionLifetime">
            <summary>
              Default ConnectionLifetime
            </summary>
        </member>
        <member name="F:Centido.Core.OracleClientConnectionStringBuilder.DefaultEnlist">
            <summary>
              Default Enlist
            </summary>
        </member>
        <member name="F:Centido.Core.OracleClientConnectionStringBuilder.DefaultMaxPoolSize">
            <summary>
              Default MaxPoolSize
            </summary>
        </member>
        <member name="F:Centido.Core.OracleClientConnectionStringBuilder.DefaultMinPoolSize">
            <summary>
              Default MinPoolSize
            </summary>
        </member>
        <member name="F:Centido.Core.OracleClientConnectionStringBuilder.DefaultPooling">
            <summary>
              Default Pooling
            </summary>
        </member>
        <member name="F:Centido.Core.OracleClientConnectionStringBuilder._connectionLifetime">
            <summary>
              When a connection is returned to the pool, its creation time is compared with the current time, and the connection is destroyed if that time span (in seconds) exceeds the value specified by Connection Lifetime
            </summary>
        </member>
        <member name="F:Centido.Core.OracleClientConnectionStringBuilder._enlist">
            <summary>
              When true or yes, the pooler automatically enlists the connection in the creation thread's current transaction context
            </summary>
        </member>
        <member name="F:Centido.Core.OracleClientConnectionStringBuilder._maxPoolSize">
            <summary>
              The maximum number of connections allowed in the pool. Setting the Max Pool Size value of the ConnectionString can affect performance
            </summary>
        </member>
        <member name="F:Centido.Core.OracleClientConnectionStringBuilder._minPoolSize">
            <summary>
              The minimum number of connections allowed in the pool
            </summary>
        </member>
        <member name="F:Centido.Core.OracleClientConnectionStringBuilder._persistSecurityInfo">
            <summary>
              When set to false or no (strongly recommended), security-sensitive information such as the password is not returned as part of the connection if the connection is open or has ever been in an open State
            </summary>
        </member>
        <member name="F:Centido.Core.OracleClientConnectionStringBuilder._pooling">
            <summary>
              When true or yes, the OracleConnection object is drawn from the appropriate pool, or if necessary, is created and added to the appropriate pool
            </summary>
        </member>
        <member name="F:Centido.Core.OracleClientConnectionStringBuilder._unicode">
            <summary>
              Specifies whether the .NET Framework Data Provider for Oracle uses UTF16 mode API calls. This keyword is ignored except when using Oracle9i client software
            </summary>
        </member>
        <member name="M:Centido.Core.OracleClientConnectionStringBuilder.Build">
            <summary>
              Build connection string
            </summary>
            <returns>A connection string</returns>
        </member>
        <member name="M:Centido.Core.OracleClientConnectionStringBuilder.Parse(System.String)">
            <summary>
              Parse a connection string
            </summary>
            <param name = "connectionString">A connection string</param>
        </member>
        <member name="M:Centido.Core.OracleClientConnectionStringBuilder.ParseHost(System.String)">
            <summary>
              Parse host name from the connection string
            </summary>
            <param name = "connectionString">Connection string</param>
            <returns>Host name</returns>
        </member>
        <member name="M:Centido.Core.OracleClientConnectionStringBuilder.ParsePortNumber(System.String)">
            <summary>
              Parse port number from the connection string
            </summary>
            <param name = "connectionString">Connection string</param>
            <returns>Port number</returns>
        </member>
        <member name="M:Centido.Core.OracleClientConnectionStringBuilder.ParseDbName(System.String)">
            <summary>
              Parse db name from the connection string
            </summary>
            <param name = "connectionString">Connection string</param>
            <returns>Db name</returns>
        </member>
        <member name="M:Centido.Core.OracleClientConnectionStringBuilder.CreateNew">
            <summary>
              Creates a new connection string builder of the current type.
            </summary>
            <returns>Returns a new connection string builder that has the same type
            as the current one.</returns>
        </member>
        <member name="P:Centido.Core.OracleClientConnectionStringBuilder.PersistSecurityInfo">
            <summary>
              When set to false or no (strongly recommended), security-sensitive information such as the password is not returned as part of the connection if the connection is open or has ever been in an open State
            </summary>
        </member>
        <member name="P:Centido.Core.OracleClientConnectionStringBuilder.Unicode">
            <summary>
              Specifies whether the .NET Framework Data Provider for Oracle uses UTF16 mode API calls. This keyword is ignored except when using Oracle9i client software
            </summary>
        </member>
        <member name="P:Centido.Core.OracleClientConnectionStringBuilder.ConnectionLifetime">
            <summary>
              When a connection is returned to the pool, its creation time is compared with the current time, and the connection is destroyed if that time span (in seconds) exceeds the value specified by Connection Lifetime
            </summary>
        </member>
        <member name="P:Centido.Core.OracleClientConnectionStringBuilder.Enlist">
            <summary>
              When true or yes, the pooler automatically enlists the connection in the creation thread's current transaction context
            </summary>
        </member>
        <member name="P:Centido.Core.OracleClientConnectionStringBuilder.MaxPoolSize">
            <summary>
              The maximum number of connections allowed in the pool. Setting the Max Pool Size value of the ConnectionString can affect performance
            </summary>
        </member>
        <member name="P:Centido.Core.OracleClientConnectionStringBuilder.MinPoolSize">
            <summary>
              The minimum number of connections allowed in the pool
            </summary>
        </member>
        <member name="P:Centido.Core.OracleClientConnectionStringBuilder.Pooling">
            <summary>
              When true or yes, the OracleConnection object is drawn from the appropriate pool, or if necessary, is created and added to the appropriate pool
            </summary>
        </member>
        <member name="P:Centido.Core.OracleClientConnectionStringBuilder.DbProviderTypeName">
            <summary>
              Db rpovider type name
            </summary>
        </member>
        <member name="T:Centido.Core.Dto.TableDto">
            <summary>
              A data transfer object for a table.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.TableDto.XmlTag">
            <summary>
              The name of the xml tag that is used to store this object.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.TableDto.CurrentXmlSchemaVersion">
            <summary>
              The current xml schema version.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.TableDto.IdTag">
            <summary>
              The name of the xml to store the table id.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.TableDto.NameTag">
            <summary>
              The name of the xml tag to store the table name.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.TableDto.DisplayNameTag">
            <summary>
              The name of the xml tag to store the table display name
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.TableDto.DescriptionTag">
            <summary>
              The name of the xml tag to store the table description.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.TableDto.UnitLevelSecurityTag">
            <summary>
              The name of the xml to store the need for unit level security.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.TableDto.ColumnListTag">
            <summary>
              The name of the xml tag to store the column list.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.TableDto.IndexListTag">
            <summary>
              The name of the xml tag to store the index list.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.TableDto.PermissionListTag">
            <summary>
              The name of the xml tag to store the table permissions.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.TableDto._columns">
            <summary>
              The table columns.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.TableDto._indexes">
            <summary>
              The table indexes.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.TableDto._permissions">
            <summary>
              The table permissions.
            </summary>
        </member>
        <member name="M:Centido.Core.Dto.TableDto.AddColumn(Centido.Core.Dto.ColumnDto)">
            <summary>
              Adds the specified column to the table column list.
            </summary>
            <param name="columnDto">The table column to be added.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnDto"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.TableDto.DeleteColumn(Centido.Core.Dto.ColumnDto)">
            <summary>
              Deletes the specified column from the table column list.
            </summary>
            <param name="columnDto">The table column to deleted.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnDto"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.TableDto.AddIndex(Centido.Core.Dto.IndexDto)">
            <summary>
              Adds the specified index to the table index list.
            </summary>
            <param name="indexDto">The table index to be added.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="indexDto"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.TableDto.DeleteIndex(Centido.Core.Dto.IndexDto)">
            <summary>
              Deletes the specified index from the table index list.
            </summary>
            <param name="indexDto">The table index to be deleted.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="indexDto"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.TableDto.AddPermission(Centido.Core.Dto.TablePermissionDto)">
            <summary>
              Adds the specified table permission to the table permission list.
            </summary>
            <param name="permission">The table permission to be added.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="permission"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.TableDto.DeletePermission(Centido.Core.Dto.TablePermissionDto)">
            <summary>
              Deletes the specified table permission from the table permission list.
            </summary>
            <param name="permission">The table permission to be deleted from the table permission list.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="permission"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.TableDto.GetSchema">
            <summary>
            This method is reserved and should not be used. When implementing the IXmlSerializable interface, you should return null (Nothing in Visual Basic) from this method, and instead, if specifying a custom schema is required, apply the <see cref="T:System.Xml.Serialization.XmlSchemaProviderAttribute"/> to the class.
            </summary>
            <returns>
            An <see cref="T:System.Xml.Schema.XmlSchema"/> that describes the XML representation of the object that is produced by the <see cref="M:System.Xml.Serialization.IXmlSerializable.WriteXml(System.Xml.XmlWriter)"/> method and consumed by the <see cref="M:System.Xml.Serialization.IXmlSerializable.ReadXml(System.Xml.XmlReader)"/> method.
            </returns>
        </member>
        <member name="M:Centido.Core.Dto.TableDto.ReadXml(System.Xml.XmlReader)">
            <summary>
            Generates an object from its XML representation.
            </summary>
            <param name="reader">The <see cref="T:System.Xml.XmlReader"/> stream from which the object is deserialized. 
            </param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="reader"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.TableDto.WriteXml(System.Xml.XmlWriter)">
            <summary>
              Converts the object into its XML representation.
            </summary>
            <param name="writer">The <see cref="T:System.Xml.XmlWriter"/> stream to which the object is serialized. 
            </param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="writer"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.TableDto.CopyTo(Centido.Core.Table)">
            <summary>
              Copies the properties of the data transfer object to the
            specified table.
            </summary>
            <param name="table">The table.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.TableDto.CreateFrom(Centido.Core.Table)">
            <summary>
              Creates a data transfer object for the specified table.
            </summary>
            <param name="table">The specified table.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <returns>Returns the data transfer object for the specified table.</returns>
        </member>
        <member name="P:Centido.Core.Dto.TableDto.Id">
            <summary>
              Gets or sets the table id.
            </summary>
        </member>
        <member name="P:Centido.Core.Dto.TableDto.Name">
            <summary>
              Gets or sets the table name.
            </summary>
        </member>
        <member name="P:Centido.Core.Dto.TableDto.DisplayName">
            <summary>
              Gets or sets the table display name.
            </summary>
        </member>
        <member name="P:Centido.Core.Dto.TableDto.Description">
            <summary>
              Gets or sets the table description.
            </summary>
        </member>
        <member name="P:Centido.Core.Dto.TableDto.UnitLevelSecurity">
            <summary>
              Gets or sets the need for unit level security.
            </summary>
        </member>
        <member name="P:Centido.Core.Dto.TableDto.Columns">
            <summary>
              Gets the table columns.
            </summary>
        </member>
        <member name="P:Centido.Core.Dto.TableDto.Indexes">
            <summary>
              Gets the table indexes.
            </summary>
        </member>
        <member name="P:Centido.Core.Dto.TableDto.Permissions">
            <summary>
              Gets the table permissions.
            </summary>
        </member>
        <member name="T:Centido.Core.StringColumn">
            <summary>
              A string table column.
            </summary>
            <remarks>The maximum value length of a string column is 2000 symbols.
            The column maximum length should be far less than 2000 symbols
            if the column is intended to be indexed.</remarks>
            <example>
              The following example shows how to use a string table column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
            
                        //Creating a string column
                        var column = table.AddColumn("my_column", ColumnType.String)
                            as StringColumn;
            
                        //Forbidding empty strings
                        column.IsNotEmpty = true;
            
                        //Setting the maximum length
                        column.MaxLength = 20;
            
                        //Setting the default value
                        column.DefaultValue = "The default value";
            
                        var id = table.InsertRow();
            
                        Console.WriteLine("The inserted value = {0}", column.Read(id).GetString());
                    }
                }
            </code>
            </example>
        </member>
        <member name="F:Centido.Core.StringColumn.StringColumnMaxLength">
            <summary>
              The maximum length of the string column.
            </summary>
        </member>
        <member name="F:Centido.Core.StringColumn._defaultValue">
            <summary>
              Th default value of the column.
            </summary>
        </member>
        <member name="F:Centido.Core.StringColumn._maxLength">
            <summary>
              The maximum length of the column.
            </summary>
        </member>
        <member name="F:Centido.Core.StringColumn._isNotEmpty">
            <summary>
              The column ability to hold empty strings.
            </summary>
        </member>
        <member name="F:Centido.Core.StringColumn._regularExpression">
            <summary>
              The regular expression for the column.
            </summary>
        </member>
        <member name="M:Centido.Core.StringColumn.#ctor(System.Guid,Centido.Core.Table)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.StringColumn"/> class
              for the specified column id and parent table.
            </summary>
            <param name="columnId">The column id.</param>
            <param name="table">The parent table.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.StringColumn.#ctor(System.Guid,Centido.Core.Table,System.String,System.String,System.String,System.Boolean,System.Int32,System.Int32)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.StringColumn"/> class
              for the specified column id, name, display name,
            description, nullability, order index, customization level and parent table.
            </summary>
            <param name="columnId">The column id.</param>
            <param name="table">The parent table.</param>
            <param name="columnName">The column name.</param>
            <param name="displayName">The column display name.</param>
            <param name="description">The column description.</param>
            <param name="isNotNull">The column ability to hold null values.</param>
            <param name="orderIndex">The column order index.</param>
            <param name="customizationlevel">The column customization level.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
        </member>
        <member name="M:Centido.Core.StringColumn.Refresh">
            <summary>
              Refreshes the properties of the column.
            </summary>
        </member>
        <member name="M:Centido.Core.StringColumn.Add(Centido.Core.Table,System.String)">
            <summary>
              Adds a new string column with the specified name to the specified table.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to execute this function.</remarks>
            <param name="table">The table.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is a column with the same name in the same user-defined table.</exception>
            <returns>Returns the newly created string table column.</returns>
            <example>
              The following example shows how to add a string column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a string table column
                        var column = StringColumn.Add(table, "my_column");
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.StringColumn.Add(Centido.Core.Table,System.Guid,System.String)">
            <summary>
              Adds a new string table column with the specified id and name to the specified table.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to execute this function.</remarks>
            <param name="table">The table.</param>
            <param name="columnId">The column id.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is a column with the same id or the same name in the same user-defined table.</exception>
            <returns>Returns the newly created string table column.</returns>
            <example>
              The following example shows how to create a string table column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a string table column
                        var column = StringColumn.Add(table, Guid.NewGuid(), "my_column");
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.StringColumn.Ensure(Centido.Core.Table,System.String)">
            <summary>
              Ensures that the table contains a string column with the specified name.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to execute this function.</remarks>
            <param name="table">The table.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to add a column and
            the current user has no permission to change the schema.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the 
            specified name but different column type.</exception>
            <returns>Returns a string table column with the specified name.</returns>
            <example>
              The following example shows how to ensure that a table has a string column with the specified name.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a string table column
                        table.AddColumn("first_column", ColumnType.String);
            
                        //Ensuring the first column
                        StringColumn.Ensure(table, "first_column");
                        //Ensuring the second column
                        StringColumn.Ensure(table, "second_column");
            
                        foreach(var column in table.Columns)
                            Console.WriteLine("Table column: name = {0}, type = {1}", column.Name, column.ColumnType);
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.StringColumn.Ensure(Centido.Core.Table,System.Guid,System.String)">
            <summary>
              Ensures that the table contains a string column with the specified id and the specified name.
            </summary>
            <param name="table">The table.</param>
            <param name="columnId">The column id.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to add a column and
            the current user has no permission to change the schema.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the
            specified id but different column name.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the 
            specified id but different column type.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the specified name
            but different column id.</exception>
            <returns>Returns the table column with the specified id, the specified name and the specified type.</returns>
            <returns>Returns the table column with the specified id, the specified name and the specified type.</returns>
            <example>
              The following example shows how to ensure a string column with the specified id and
            the specified name.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a table column
                        var columnId = Guid.NewGuid();
                        table.AddColumn(columnId, "first_column", ColumnType.String);
            
                        //Ensuring the first column
                        StringColumn.Ensure(table, columnId, "first_column");
                        //Ensuring the second column
                        StringColumn.Ensure(table, Guid.NewGuid(), "second_column");
            
                        foreach(var column in table.Columns)
                            Console.WriteLine("Table column: name = {0}, type = {1}", column.Name, column.ColumnType);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.StringColumn.ColumnType">
            <summary>
              Gets the table column type.
            </summary>
        </member>
        <member name="P:Centido.Core.StringColumn.ValueOdbcType">
            <summary>
              Gets the column value database type.
            </summary>
        </member>
        <member name="P:Centido.Core.StringColumn.IsNotEmpty">
            <summary>
              Gets or sets the column ability to store empty strings.
            </summary>
            <value>True if empty strings are forbidden; otherwise, false.</value>
            <remarks>The current user has to have the permission to change the schema in order to set this property.</remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to set this property.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to set this property to true and there are rows that contain invalid values.</exception>
            <example>
              The following example shows how to set the column ability to store empty strings.
            <code>
                using System;
                using System.Data.Common;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
            
                        //Creating a string column
                        var column = table.AddColumn("my_column", ColumnType.String)
                            as StringColumn;
            
                        //Forbidding empty strings
                        column.IsNotEmpty = true;
            
                        //Trying to insert an empty string
                        try
                        {
                            table.InsertRow(column.Value("    "));
                        }
                        catch(DbException)
                        {
                            Console.WriteLine("Inserting empty strings is forbidden");
                        }
            
                        Console.WriteLine("Table: row count = {0}", table.RowCount);
            
                        //Inserting valid values
                        table.InsertRow(column.Value(null));
                        table.InsertRow(column.Value("A string value"));
            
                        Console.WriteLine("Table: row count = {0}", table.RowCount);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.StringColumn.MaxLength">
            <summary>
              Gets or sets the maximum length of the column.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to set this property.</remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to set this property.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to set this property to a value greater than 2000.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to set this property to a negative value.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to set this property and there is a need to truncate row values.</exception>
            <example>
              The following example shows how to set the maximum length of a string column.
            <code>
                using System;
                using System.Data.Common;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
            
                        //Creating a string column
                        var column = table.AddColumn("my_column", ColumnType.String)
                            as StringColumn;
            
                        //Setting the maximum length
                        column.MaxLength = 2;
            
                        //Trying to insert an invalid value
                        try
                        {
                            table.InsertRow(column.Value("aaa"));
                        }
                        catch(DbException)
                        {
                            Console.WriteLine("Inserting a value that is too long is forbidden");
                        }
            
                        Console.WriteLine("Table: row count = {0}", table.RowCount);
            
                        table.InsertRow(column.Value("aa"));
                
                        Console.WriteLine("Table: row count = {0}", table.RowCount);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.StringColumn.RegularExpression">
            <summary>
              Gets or sets the regular expression pattern for the column.
            </summary>
            <remarks>
            <para>Currently the regular expression are not supported for SQL Server.
            The availability of this feature can be checked with the RegularExpressions property
            of the <see cref="T:Centido.Core.DbmsInfo"/> class.
            If the feature is not available then the value of this property has no effect.</para>
            <para>The current user has to have the permission to change the schema in order to set this property.</para>
            </remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to set this property.</exception>
            <example>
              The following example shows how set the regular expression pattern for a string column.
            <code>
                using System;
                using System.Data.Common;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
            
                        //Creating a string column
                        var column = table.AddColumn("my_column", ColumnType.String)
                            as StringColumn;
            
                        //Setting the string pattern
                        column.RegularExpression = "a|b";
            
                        //Trying to insert an invalid value
                        try
                        {
                            table.InsertRow(column.Value("c"));
                        }
                        catch(DbException)
                        {
                            Console.WriteLine("Insrting a value that doesn`t match the pattern is forbidden");
                        }
            
                        Console.WriteLine("Table: row count = {0}", table.RowCount);
            
                        table.InsertRow(column.Value("a"));
                
                        Console.WriteLine("Table: row count = {0}", table.RowCount);            
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.StringColumn.BackEndTableName">
            <summary>
              Gets the column database table name.
            </summary>
        </member>
        <member name="P:Centido.Core.StringColumn.DefaultValue">
            <summary>
              Gets or sets the default value of the column.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to set this property.</remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to set this property.</exception>
            <example>
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
            
                        //Creating a string column
                        var column = table.AddColumn("my_column", ColumnType.String)
                            as StringColumn;
            
                        //Setting the column default value
                        column.DefaultValue = "A string column default value";
            
                        //Inserting a row
                        var id = table.InsertRow();
            
                        Console.WriteLine("Inserted value = {0}", column.Read(id).GetString());
                    }
                }
            </code>
            </example>
        </member>
        <member name="T:Centido.Core.BoolColumn">
            <summary>
              A boolean table column.
            </summary>
            <remarks>A boolean column uses a table column of int32 database type but
            restricts its values to 0 and 1 only.</remarks>
            <example>
              The following example shows how to use a boolean column.
            <code>
                using System;
                using System.Data.Common;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
            
                        //Creating a boolean column
                        var column = table.AddColumn("my_column", ColumnType.Boolean)
                            as BoolColumn;
            
                        //Trying to insert an invalid value
                        try
                        {
                            table.InsertRow(column.Value(2));
                        }
                        catch(DbException)
                        {
                            Console.WriteLine("Inserting invalid values is forbidden");
                        }
            
                        //Inserting valid values
                        table.InsertRow(column.Value(0));
                        table.InsertRow(column.Value(1));
                        table.InsertRow(column.Value(false));
                        table.InsertRow(column.Value(true));
            
                        domain.DbAccess.ExecuteReader(cmd =>
                        {
                            cmd.CommandText = string.Format("select {0} from {1}", column.Name, table.FullName);
                        }, reader =>
                        {
                            Console.WriteLine("An inserted value = {0}", DbValue.GetBoolean(reader[0]));
                        });
                    }
                }
            </code>
            </example>
        </member>
        <member name="F:Centido.Core.BoolColumn._defaultValue">
            <summary>
              The default value of the column.
            </summary>
        </member>
        <member name="M:Centido.Core.BoolColumn.#ctor(System.Guid,Centido.Core.Table)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.BoolColumn"/> class
              for the specified column id and parent table.
            </summary>
            <param name="columnId">The column id.</param>
            <param name="table">The parent table.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.BoolColumn.#ctor(System.Guid,Centido.Core.Table,System.String,System.String,System.String,System.Boolean,System.Int32,System.Int32)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.BoolColumn"/> class
              for the specified column id, name, display name,
            description, nullability, order index, customization level and parent table.
            </summary>
            <param name="columnId">The column id.</param>
            <param name="table">The parent table.</param>
            <param name="columnName">The column name.</param>
            <param name="displayName">The column display name.</param>
            <param name="description">The column description.</param>
            <param name="isNotNull">The column ability to hold null values.</param>
            <param name="orderIndex">The column order index.</param>
            <param name="customizationlevel">The column customization level.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
        </member>
        <member name="M:Centido.Core.BoolColumn.Value(System.Object)">
            <summary>
              Creates a column value for the specified value.
            </summary>
            <remarks>A column value is used when inserting and updating values in the column.</remarks>
            <param name = "columnValue">The value.</param>
            <returns>Returns the column value for the specified value.</returns>
            <example>
              The following example shows how insert into a boolean column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
            
                        //Creating a boolean column
                        var column = table.AddColumn("my_column", ColumnType.Boolean)
                            as BoolColumn;
            
                        //Inserting a boolean value
                        var id = table.InsertRow(column.Value(true));
            
                        Console.WriteLine("Inserted value: {0}", column.Read(id).GetBoolean());
                    }
                }   
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.BoolColumn.Refresh">
            <summary>
              Refreshes the properties of the column.
            </summary>
        </member>
        <member name="M:Centido.Core.BoolColumn.Add(Centido.Core.Table,System.String)">
            <summary>
              Adds a new boolean column with the specified name to the specified table.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to execute this function.</remarks>
            <param name="table">The table.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is a column with the same name in the same user-defined table.</exception>
            <returns>Returns the newly created boolean table column.</returns>
            <example>
              The following example shows how to add a boolean column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a boolean table column
                        var column = BoolColumn.Add(table, "my_column");
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.BoolColumn.Add(Centido.Core.Table,System.Guid,System.String)">
            <summary>
              Adds a new boolean table column with the specified id and name to the specified table.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to execute this function.</remarks>
            <param name="table">The table.</param>
            <param name="columnId">The column id.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is a column with the same id or the same name in the same user-defined table.</exception>
            <returns>Returns the newly created boolean table column.</returns>
            <example>
              The following example shows how to create a boolean table column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a boolean table column
                        var column = BoolColumn.Add(table, Guid.NewGuid(), "my_column");
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.BoolColumn.Ensure(Centido.Core.Table,System.String)">
            <summary>
              Ensures that the table contains a boolean column with the specified name.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to execute this function.</remarks>
            <param name="table">The table.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to add a column and
            the current user has no permission to change the schema.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the 
            specified name but different column type.</exception>
            <returns>Returns a boolean table column with the specified name.</returns>
            <example>
              The following example shows how to ensure that a table has a boolean column with the specified name.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a boolean table column
                        table.AddColumn("first_column", ColumnType.Boolean);
            
                        //Ensuring the first column
                        BoolColumn.Ensure(table, "first_column");
                        //Ensuring the second column
                        BoolColumn.Ensure(table, "second_column");
            
                        foreach(var column in table.Columns)
                            Console.WriteLine("Table column: name = {0}, type = {1}", column.Name, column.ColumnType);
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.BoolColumn.Ensure(Centido.Core.Table,System.Guid,System.String)">
            <summary>
              Ensures that the table contains a boolean column with the specified id and the specified name.
            </summary>
            <param name="table">The table.</param>
            <param name="columnId">The column id.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to add a column and
            the current user has no permission to change the schema.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the
            specified id but different column name.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the 
            specified id but different column type.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the specified name
            but different column id.</exception>
            <returns>Returns the table column with the specified id, the specified name and the specified type.</returns>
            <returns>Returns the table column with the specified id, the specified name and the specified type.</returns>
            <example>
              The following example shows how to ensure a boolean column with the specified id and
            the specified name.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a table column
                        var columnId = Guid.NewGuid();
                        table.AddColumn(columnId, "first_column", ColumnType.Boolean);
            
                        //Ensuring the first column
                        BoolColumn.Ensure(table, columnId, "first_column");
                        //Ensuring the second column
                        BoolColumn.Ensure(table, Guid.NewGuid(), "second_column");
            
                        foreach(var column in table.Columns)
                            Console.WriteLine("Table column: name = {0}, type = {1}", column.Name, column.ColumnType);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.BoolColumn.ColumnType">
            <summary>
              Gets the column type.
            </summary>
        </member>
        <member name="P:Centido.Core.BoolColumn.ValueOdbcType">
            <summary>
              Gets the column value database type.
            </summary>
        </member>
        <member name="P:Centido.Core.BoolColumn.BackEndTableName">
            <summary>
              Gets the column backend table name.
            </summary>
        </member>
        <member name="P:Centido.Core.BoolColumn.DefaultValue">
            <summary>
              Gets or sets the default value of the column.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to set this property.</remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to set this property.</exception>
            <example>
              The following example shows how to set the default value of a boolean column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
            
                        //Creating a boolean column
                        var column = table.AddColumn("my_column", ColumnType.Boolean)
                            as BoolColumn;
            
                        //Setting the default value
                        column.DefaultValue = true;
            
                        Console.WriteLine("The default value = {0}", column.DefaultValue);
            
                        //Inserting a new row
                        var id = table.InsertRow();
            
                        Console.WriteLine("The inserted value = {0}", column.Read(id).GetBoolean());
                    }
                }
            </code>
            </example>
        </member>
        <member name="T:Centido.Core.DecimalColumn">
            <summary>
              A decimal table column.
            </summary>
            <example>
              The following example shows how to use a decimal column.
            <code>
                using System;
                using System.Data.Common;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
            
                        //Creating a decimal column
                        var column = table.AddColumn("my_column", ColumnType.Decimal)
                            as DecimalColumn;
                        
                        //Setting the column precision
                        column.Precision = 2;
            
                        try
                        {
                            //Trying to insert a value that is too large
                            table.InsertRow(column.Value(100M));
                        }
                        catch(DbException)
                        {
                            Console.WriteLine("Trying to insert a value that is too large");
                        }
            
                        //Setting the column scale
                        column.Scale = 1;
            
                        //Inserting a value with two digits after commma
                        var id = table.InsertRow(column.Value(0.25M));
            
                        Console.WriteLine("Initial value = {0}, inserted value = {1}",
                            0.25M, column.Read(id).GetDecimal());
                    }
                }
            </code>
            </example>
        </member>
        <member name="F:Centido.Core.DecimalColumn._defaultValue">
            <summary>
              The default value of the column.
            </summary>
        </member>
        <member name="F:Centido.Core.DecimalColumn._maximum">
            <summary>
              The maximum value of the column.
            </summary>
        </member>
        <member name="F:Centido.Core.DecimalColumn._minimum">
            <summary>
              The minimum value of the column.
            </summary>
        </member>
        <member name="F:Centido.Core.DecimalColumn._precision">
            <summary>
              The precision of the column.
            </summary>
        </member>
        <member name="F:Centido.Core.DecimalColumn._scale">
            <summary>
              The scale of the column.
            </summary>
        </member>
        <member name="M:Centido.Core.DecimalColumn.#ctor(System.Guid,Centido.Core.Table)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.DecimalColumn"/> class
              for the specified column id and parent table.
            </summary>
            <param name="columnId">The column id.</param>
            <param name="table">The parent table.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.DecimalColumn.#ctor(System.Guid,Centido.Core.Table,System.String,System.String,System.String,System.Boolean,System.Int32,System.Int32)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.DecimalColumn"/> class
              for the specified column id, name, display name,
            description, nullability, order index, customization level and parent table.
            </summary>
            <param name="columnId">The column id.</param>
            <param name="table">The parent table.</param>
            <param name="columnName">The column name.</param>
            <param name="displayName">The column display name.</param>
            <param name="description">The column description.</param>
            <param name="isNotNull">The column ability to hold null values.</param>
            <param name="orderIndex">The column order index.</param>
            <param name="customizationlevel">The column customization level.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
        </member>
        <member name="M:Centido.Core.DecimalColumn.Refresh">
            <summary>
              Refreshes the properties of the column.
            </summary>
        </member>
        <member name="M:Centido.Core.DecimalColumn.Add(Centido.Core.Table,System.String)">
            <summary>
              Adds a new decimal column with the specified name to the specified table.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to execute this function.</remarks>
            <param name="table">The table.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is a column with the same name in the same user-defined table.</exception>
            <returns>Returns the newly created decimal table column.</returns>
            <example>
              The following example shows how to add a decimal column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a decimal table column
                        var column = DecimalColumn.Add(table, "my_column");
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.DecimalColumn.Add(Centido.Core.Table,System.Guid,System.String)">
            <summary>
              Adds a new decimal table column with the specified id and name to the specified table.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to execute this function.</remarks>
            <param name="table">The table.</param>
            <param name="columnId">The column id.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is a column with the same id or the same name in the same user-defined table.</exception>
            <returns>Returns the newly created decimal table column.</returns>
            <example>
              The following example shows how to create a decimal table column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a decimal table column
                        var column = DecimalColumn.Add(table, Guid.NewGuid(), "my_column");
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.DecimalColumn.Ensure(Centido.Core.Table,System.String)">
            <summary>
              Ensures that the table contains a decimal column with the specified name.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to execute this function.</remarks>
            <param name="table">The table.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to add a column and
            the current user has no permission to change the schema.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the 
            specified name but different column type.</exception>
            <returns>Returns a decimal table column with the specified name.</returns>
            <example>
              The following example shows how to ensure that a table has a decimal column with the specified name.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a decimal table column
                        table.AddColumn("first_column", ColumnType.Decimal);
            
                        //Ensuring the first column
                        DecimalColumn.Ensure(table, "first_column");
                        //Ensuring the second column
                        DecimalColumn.Ensure(table, "second_column");
            
                        foreach(var column in table.Columns)
                            Console.WriteLine("Table column: name = {0}, type = {1}", column.Name, column.ColumnType);
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.DecimalColumn.Ensure(Centido.Core.Table,System.Guid,System.String)">
            <summary>
              Ensures that the table contains a decimal column with the specified id and the specified name.
            </summary>
            <param name="table">The table.</param>
            <param name="columnId">The column id.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to add a column and
            the current user has no permission to change the schema.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the
            specified id but different column name.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the 
            specified id but different column type.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the specified name
            but different column id.</exception>
            <returns>Returns the table column with the specified id, the specified name and the specified type.</returns>
            <returns>Returns the table column with the specified id, the specified name and the specified type.</returns>
            <example>
              The following example shows how to ensure a decimal column with the specified id and
            the specified name.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a table column
                        var columnId = Guid.NewGuid();
                        table.AddColumn(columnId, "first_column", ColumnType.Decimal);
            
                        //Ensuring the first column
                        DecimalColumn.Ensure(table, columnId, "first_column");
                        //Ensuring the second column
                        DecimalColumn.Ensure(table, Guid.NewGuid(), "second_column");
            
                        foreach(var column in table.Columns)
                            Console.WriteLine("Table column: name = {0}, type = {1}", column.Name, column.ColumnType);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.DecimalColumn.ColumnType">
            <summary>
              Gets the column type.
            </summary>
        </member>
        <member name="P:Centido.Core.DecimalColumn.ValueOdbcType">
            <summary>
              Gets the column value database type.
            </summary>
        </member>
        <member name="P:Centido.Core.DecimalColumn.Precision">
            <summary>
              Gets or sets the precision of the column.
            </summary>
            <remarks>
            <para>The precision determines the number of digits that can have a value stored in the column.
            The precision of the column must always be greater or equal to the scale of the column.</para>
            <para>The current user has to have the permission to change the schema in order to set this property.</para>
            </remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to set this property.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to set the precision less than the scale.</exception>
            <example>
              The following example shows how to set the precision of a decimal column.
            <code>
                using System;
                using System.Data.Common;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
            
                        //Creating a decimal column
                        var column = table.AddColumn("my_column", ColumnType.Decimal)
                            as DecimalColumn;
                        
                        //Setting the column precision
                        column.Precision = 2;
            
                        try
                        {
                            //Trying to insert a value that is too large
                            table.InsertRow(column.Value(100M));
                        }
                        catch(DbException)
                        {
                            Console.WriteLine("Trying to insert a value that is too large");
                        }
            
                        Console.WriteLine("Table: row count = {0}", table.RowCount);
            
                        //Inserting a valid value
                        table.InsertRow(column.Value(99));
            
                        Console.WriteLine("Table: row count = {0}", table.RowCount);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.DecimalColumn.Scale">
            <summary>
              Gets or sets the scale of the column.
            </summary>
            <remarks>
            <para>The scale of the column determines the number of digits after comma that can store a value in the column.
            The precision of the column must always be greater or equal to the scale of the column.
            The scale of the column is taken in account only if the precision of the column is also set.
            </para>
            <para>The current user has to have the permision to change the schema in order to set this property.</para>
            </remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to set this property.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to set the precision less than the scale.</exception>
            <example>
              The following example shows how to set the scale of the column.
            <code>
                using System;
                using System.Data.Common;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
            
                        //Creating a decimal column
                        var column = table.AddColumn("my_column", ColumnType.Decimal)
                            as DecimalColumn;
                        
                        //Setting the column precision
                        column.Precision = 2;
                        //Setting the column scale
                        column.Scale = 1;
            
                        //Inserting a value with two digits after commma
                        var id = table.InsertRow(column.Value(0.25M));
            
                        Console.WriteLine("Initial value = {0}, inserted value = {1}",
                            0.25M, column.Read(id).GetDecimal());
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.DecimalColumn.BackEndTableName">
            <summary>
              Gets the column backend table name.
            </summary>
        </member>
        <member name="P:Centido.Core.DecimalColumn.Minimum">
            <summary>
              Gets or sets the minimum value of the column.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to set this property.</remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to set this property.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to set this property to true and there are rows that contain invalid values.</exception>
            <example>
              The following example shows how to set the minimum value of a decimal column.
            <code>
                using System;
                using System.Data.Common;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
            
                        //Creating a decimal column
                        var column = table.AddColumn("my_column", ColumnType.Decimal)
                            as DecimalColumn;
            
                        //Setting the column minimum
                        column.Minimum = 1;
            
                        //Trying to insert an invalid value
                        try
                        {
                            table.InsertRow(column.Value(0));
                        }
                        catch(DbException)
                        {
                            Console.WriteLine("Inserting values less than the minimum is forbidden");
                        }
            
                        Console.WriteLine("Table: row count = {0}", table.RowCount);
            
                        //Inserting a valid value
                        table.InsertRow(column.Value(2));
            
                        Console.WriteLine("Table: row count = {0}", table.RowCount);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.DecimalColumn.Maximum">
            <summary>
              Gets or sets the maximum value of the column.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to set this property.</remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to set this property.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to set this property to true and there are rows that contain invalid values.</exception>
            <example>
              The following example shows how to set the maximum value of a decimal column.
            <code>
                using System;
                using System.Data.Common;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
            
                        //Creating a decimal column
                        var column = table.AddColumn("my_column", ColumnType.Decimal)
                            as DecimalColumn;
            
                        //Setting the column maximum
                        column.Maximum = 1;
            
                        //Trying to insert an invalid value
                        try
                        {
                            table.InsertRow(column.Value(2));
                        }
                        catch(DbException)
                        {
                            Console.WriteLine("Inserting values greater than the maximum is forbidden");
                        }
            
                        Console.WriteLine("Table: row count = {0}", table.RowCount);
            
                        //Inserting a valid value
                        table.InsertRow(column.Value(0));
            
                        Console.WriteLine("Table: row count = {0}", table.RowCount);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.DecimalColumn.DefaultValue">
            <summary>
              Gets or sets the default value of the column.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to set this property.</remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to set this property.</exception>
            <example>
              The following example shows how to set the default value of a decimal column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
            
                        //Creating a decimal column
                        var column = table.AddColumn("my_column", ColumnType.Decimal)
                            as DecimalColumn;
                        column.Precision = 10;
                        column.Scale = 3;
            
                        //Setting the column default value
                        column.DefaultValue = 1.5M;
            
                        //Inserting a row
                        var id = table.InsertRow();
            
                        Console.WriteLine("Inserted value = {0}", column.Read(id).GetDecimal());
                    }
                }
            </code>
            </example>
        </member>
        <member name="T:Centido.Core.GuidColumn">
            <summary>
              A guid table column.
            </summary>
            <remarks>A guid column stores values formatted as binary arrays.</remarks>
            <example>
              The following example shows how to use a guid column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
            
                        //Creating a guid column
                        var column = table.AddColumn("my_column", ColumnType.Guid)
                            as GuidColumn;
            
                        //Setting the column default value
                        column.DefaultValue = Guid.NewGuid();
            
                        //Inserting a row
                        var id = table.InsertRow();
            
                        Console.WriteLine("Inserted value = {0}", column.Read(id).GetGuid());
            
                        //Updating the row
                        table.UpdateRow(id, column.Value(Guid.NewGuid()));
            
                        Console.WriteLine("Updated value = {0}", column.Read(id).GetGuid());
                    }
                }
            </code>
            </example>
        </member>
        <member name="F:Centido.Core.GuidColumn._defaultValue">
            <summary>
              The default value of the column.
            </summary>
        </member>
        <member name="M:Centido.Core.GuidColumn.#ctor(System.Guid,Centido.Core.Table)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.GuidColumn"/> class
              for the specified column id and parent table.
            </summary>
            <param name="columnId">The column id.</param>
            <param name="table">The parent table.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.GuidColumn.#ctor(System.Guid,Centido.Core.Table,System.String,System.String,System.String,System.Boolean,System.Int32,System.Int32)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.GuidColumn"/> class
              for the specified column id, name, display name,
            description, nullability, order index, customization level and parent table.
            </summary>
            <param name="columnId">The column id.</param>
            <param name="table">The parent table.</param>
            <param name="columnName">The column name.</param>
            <param name="displayName">The column display name.</param>
            <param name="description">The column description.</param>
            <param name="isNotNull">The column ability to hold null values.</param>
            <param name="orderIndex">The column order index.</param>
            <param name="customizationlevel">The column customization level.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
        </member>
        <member name="M:Centido.Core.GuidColumn.Value(System.Object)">
            <summary>
              Creates a column value.
            </summary>
            <remarks>Column values are used when inserting and updating data in a table.</remarks>
            <param name = "columnValue">The value inside.</param>
            <returns>Returns the newly created column value.</returns>
            <example>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
            
                        //Creating a guid column
                        var column = table.AddColumn("my_column", ColumnType.Guid)
                            as GuidColumn;
            
                        //Inserting a guid value
                        var id = table.InsertRow(column.Value(Guid.NewGuid()));
            
                        Console.WriteLine("Inserted value = {0}", column.Read(id).GetGuid());
                    }
                }
            <code>
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.GuidColumn.Refresh">
            <summary>
              Refreshes the properties of the column.
            </summary>
        </member>
        <member name="M:Centido.Core.GuidColumn.Add(Centido.Core.Table,System.String)">
            <summary>
              Adds a new guid column with the specified name to the specified table.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to execute this function.</remarks>
            <param name="table">The table.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is a column with the same name in the same user-defined table.</exception>
            <returns>Returns the newly created guid table column.</returns>
            <example>
              The following example shows how to add a guid column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a guid table column
                        var column = GuidColumn.Add(table, "my_column");
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.GuidColumn.Add(Centido.Core.Table,System.Guid,System.String)">
            <summary>
              Adds a new guid table column with the specified id and name to the specified table.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to execute this function.</remarks>
            <param name="table">The table.</param>
            <param name="columnId">The column id.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is a column with the same id or the same name in the same user-defined table.</exception>
            <returns>Returns the newly created guid table column.</returns>
            <example>
              The following example shows how to create a guid table column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a guid table column
                        var column = GuidColumn.Add(table, Guid.NewGuid(), "my_column");
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.GuidColumn.Ensure(Centido.Core.Table,System.String)">
            <summary>
              Ensures that the table contains a guid column with the specified name.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to execute this function.</remarks>
            <param name="table">The table.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to add a column and
            the current user has no permission to change the schema.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the 
            specified name but different column type.</exception>
            <returns>Returns a guid table column with the specified name.</returns>
            <example>
              The following example shows how to ensure that a table has a guid column with the specified name.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a guid table column
                        table.AddColumn("first_column", ColumnType.Guid);
            
                        //Ensuring the first column
                        GuidColumn.Ensure(table, "first_column");
                        //Ensuring the second column
                        GuidColumn.Ensure(table, "second_column");
            
                        foreach(var column in table.Columns)
                            Console.WriteLine("Table column: name = {0}, type = {1}", column.Name, column.ColumnType);
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.GuidColumn.Ensure(Centido.Core.Table,System.Guid,System.String)">
            <summary>
              Ensures that the table contains a guid column with the specified id and the specified name.
            </summary>
            <param name="table">The table.</param>
            <param name="columnId">The column id.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to add a column and
            the current user has no permission to change the schema.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the
            specified id but different column name.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the 
            specified id but different column type.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the specified name
            but different column id.</exception>
            <returns>Returns the table column with the specified id, the specified name and the specified type.</returns>
            <returns>Returns the table column with the specified id, the specified name and the specified type.</returns>
            <example>
              The following example shows how to ensure a guid column with the specified id and
            the specified name.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a table column
                        var columnId = Guid.NewGuid();
                        table.AddColumn(columnId, "first_column", ColumnType.Guid);
            
                        //Ensuring the first column
                        GuidColumn.Ensure(table, columnId, "first_column");
                        //Ensuring the second column
                        GuidColumn.Ensure(table, Guid.NewGuid(), "second_column");
            
                        foreach(var column in table.Columns)
                            Console.WriteLine("Table column: name = {0}, type = {1}", column.Name, column.ColumnType);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.GuidColumn.ColumnType">
            <summary>
              Gets the column type.
            </summary>
        </member>
        <member name="P:Centido.Core.GuidColumn.ValueOdbcType">
            <summary>
              Gets the column value database type.
            </summary>
        </member>
        <member name="P:Centido.Core.GuidColumn.BackEndTableName">
            <summary>
              Gets the column backend table name.
            </summary>
        </member>
        <member name="P:Centido.Core.GuidColumn.DefaultValue">
            <summary>
              Gets or sets the default value of the column.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to set this property.</remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to set this property.</exception>
            <example>
              The following example shows how to set the default value of the column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
            
                        //Creating a guid column
                        var column = table.AddColumn("my_column", ColumnType.Guid)
                            as GuidColumn;
            
                        //Setting the column default value
                        column.DefaultValue = Guid.NewGuid();
            
                        //Inserting a row
                        var id = table.InsertRow();
            
                        Console.WriteLine("Inserted value = {0}", column.Read(id).GetGuid());
                    }
                }      
            </code>
            </example>
        </member>
        <member name="T:Centido.Core.TableAccessRight">
            <summary>
              Table security access right
            </summary>
        </member>
        <member name="F:Centido.Core.TableAccessRight._dataAction">
            <summary>
              Access type
            </summary>
        </member>
        <member name="F:Centido.Core.TableAccessRight._owner">
            <summary>
              Owner
            </summary>
        </member>
        <member name="F:Centido.Core.TableAccessRight._table">
            <summary>
              Table
            </summary>
        </member>
        <member name="F:Centido.Core.TableAccessRight._user">
            <summary>
              User
            </summary>
        </member>
        <member name="M:Centido.Core.TableAccessRight.#ctor(Centido.Core.Table,Centido.Core.User,Centido.Core.User,Centido.Core.DataAction)">
            <summary>
              Public constructor
            </summary>
            <param name = "table">Table</param>
            <param name = "user">User</param>
            <param name = "owner">Owner</param>
            <param name = "dataAction">Access type</param>
        </member>
        <member name="P:Centido.Core.TableAccessRight.Owner">
            <summary>
              Owner that privides rows for access
            </summary>
        </member>
        <member name="P:Centido.Core.TableAccessRight.Table">
            <summary>
              Table
            </summary>
        </member>
        <member name="P:Centido.Core.TableAccessRight.User">
            <summary>
              User that has access
            </summary>
        </member>
        <member name="P:Centido.Core.TableAccessRight.DataAction">
            <summary>
              Access type
            </summary>
        </member>
        <member name="T:Centido.Core.SqlServerConnectionStringBuilder">
            <summary>
              Represents Sql Server connection string builder
            </summary>
        </member>
        <member name="F:Centido.Core.SqlServerConnectionStringBuilder.DefaultAsync">
            <summary>
              Default value for Async property
            </summary>
        </member>
        <member name="F:Centido.Core.SqlServerConnectionStringBuilder.DefaultConnectionTimeout">
            <summary>
              Default value for ConnectionTimeout property
            </summary>
        </member>
        <member name="F:Centido.Core.SqlServerConnectionStringBuilder.DefaultConnectionLifetime">
            <summary>
              Default value for ConnectionLifetime property
            </summary>
        </member>
        <member name="F:Centido.Core.SqlServerConnectionStringBuilder.DefaultContextConnection">
            <summary>
              Default value for ContextConnection property
            </summary>
        </member>
        <member name="F:Centido.Core.SqlServerConnectionStringBuilder.DefaultConnectionReset">
            <summary>
              Default value for ConnectionReset property
            </summary>
        </member>
        <member name="F:Centido.Core.SqlServerConnectionStringBuilder.DefaultEncrypt">
            <summary>
              Default value for Encrypt property
            </summary>
        </member>
        <member name="F:Centido.Core.SqlServerConnectionStringBuilder.DefaultEnlist">
            <summary>
              Default value for Enlist property
            </summary>
        </member>
        <member name="F:Centido.Core.SqlServerConnectionStringBuilder.DefaultLoadBalanceTimeout">
            <summary>
              Default value for LoadBalanceTimeout property
            </summary>
        </member>
        <member name="F:Centido.Core.SqlServerConnectionStringBuilder.DefaultMultipleActiveResultSet">
            <summary>
              Default value for MultipleActiveResultSet property
            </summary>
        </member>
        <member name="F:Centido.Core.SqlServerConnectionStringBuilder.DefaultMaxPoolSize">
            <summary>
              Default value for MaxPoolSize property
            </summary>
        </member>
        <member name="F:Centido.Core.SqlServerConnectionStringBuilder.DefaultMinPoolSize">
            <summary>
              Default value for MinPoolSize property
            </summary>
        </member>
        <member name="F:Centido.Core.SqlServerConnectionStringBuilder.DefaultPacketSize">
            <summary>
              Default value for PacketSize property
            </summary>
        </member>
        <member name="F:Centido.Core.SqlServerConnectionStringBuilder.DefaultPersistSecurityInfo">
            <summary>
              Default value for PersistSecurityInfo property
            </summary>
        </member>
        <member name="F:Centido.Core.SqlServerConnectionStringBuilder.DefaultPooling">
            <summary>
              Default value for Pooling property
            </summary>
        </member>
        <member name="F:Centido.Core.SqlServerConnectionStringBuilder.DefaultReplication">
            <summary>
              Default value for Replication property
            </summary>
        </member>
        <member name="F:Centido.Core.SqlServerConnectionStringBuilder.DefaultTransactionBinding">
            <summary>
              Default value for TransactionBinding property
            </summary>
        </member>
        <member name="F:Centido.Core.SqlServerConnectionStringBuilder.DefaultTrustServerCertificate">
            <summary>
              Default value for TrustServerCertificate property
            </summary>
        </member>
        <member name="F:Centido.Core.SqlServerConnectionStringBuilder.DefaultUserId">
            <summary>
              Default value for UserId property
            </summary>
        </member>
        <member name="F:Centido.Core.SqlServerConnectionStringBuilder._async">
            <summary>
              When true, enables asynchronous operation support. Recognized values are true, false, yes, and no.
            </summary>
        </member>
        <member name="F:Centido.Core.SqlServerConnectionStringBuilder._connectionLifetime">
            <summary>
              When a connection is returned to the pool, its creation time is compared with the current time, and the connection is destroyed if that time span (in seconds) exceeds the value specified by Connection Lifetime. This is useful in clustered configurations to force load balancing between a running server and a server just brought online. A value of zero (0) causes pooled connections to have the maximum connection timeout.
            </summary>
        </member>
        <member name="F:Centido.Core.SqlServerConnectionStringBuilder._connectionReset">
            <summary>
              Determines whether the database connection is reset when being removed from the pool. Setting to 'false' avoids making an additional server round-trip when obtaining a connection, but the programmer must be aware that the connection state is not being reset.
            </summary>
        </member>
        <member name="F:Centido.Core.SqlServerConnectionStringBuilder._connectionTimeout">
            <summary>
              The length of time (in seconds) to wait for a connection to the server before terminating the attempt and generating an error.
            </summary>
        </member>
        <member name="F:Centido.Core.SqlServerConnectionStringBuilder._contextConnection">
            <summary>
              True if an in-process connection to SQL Server should be made.
            </summary>
        </member>
        <member name="F:Centido.Core.SqlServerConnectionStringBuilder._currentLanguage">
            <summary>
              The SQL Server Language record name.
            </summary>
        </member>
        <member name="F:Centido.Core.SqlServerConnectionStringBuilder._encrypt">
            <summary>
              When true, SQL Server uses SSL encryption for all data sent between the client and server if the server has a certificate installed. Recognized values are true, false, yes, and no.
            </summary>
        </member>
        <member name="F:Centido.Core.SqlServerConnectionStringBuilder._enlist">
            <summary>
              When true, the pooler automatically enlists the connection in the creation thread's current transaction context. Recognized values are true, false, yes, and no.
            </summary>
        </member>
        <member name="F:Centido.Core.SqlServerConnectionStringBuilder._failoverPartner">
            <summary>
              The name of the failover partner server where database mirroring is configured.
            </summary>
        </member>
        <member name="F:Centido.Core.SqlServerConnectionStringBuilder._loadBalanceTimeout">
            <summary>
              The minimum time, in seconds, for the connection to live in the connection pool before being destroyed.
            </summary>
        </member>
        <member name="F:Centido.Core.SqlServerConnectionStringBuilder._maxPoolSize">
            <summary>
              The maximum number of connections allowed in the pool.
            </summary>
        </member>
        <member name="F:Centido.Core.SqlServerConnectionStringBuilder._minPoolSize">
            <summary>
              The minimum number of connections allowed in the pool.
            </summary>
        </member>
        <member name="F:Centido.Core.SqlServerConnectionStringBuilder._multipleActiveResultSets">
            <summary>
              When true, an application can maintain multiple active result sets (MARS). When false, an application must process or cancel all result sets from one batch before it can execute any other batch on that connection. Recognized values are true and false.
            </summary>
        </member>
        <member name="F:Centido.Core.SqlServerConnectionStringBuilder._packetSize">
            <summary>
              Size in bytes of the network packets used to communicate with an instance of SQL Server.
            </summary>
        </member>
        <member name="F:Centido.Core.SqlServerConnectionStringBuilder._persistSecurityInfo">
            <summary>
              When set to 'false' (strongly recommended), security-sensitive information, such as the password, is not returned as part of the connection if the connection is open or has ever been in an open state. Resetting the connection string resets all connection string values including the password.
            </summary>
        </member>
        <member name="F:Centido.Core.SqlServerConnectionStringBuilder._pooling">
            <summary>
              When true, the SQLConnection object is drawn from the appropriate pool, or if necessary, is created and added to the appropriate pool. Recognized values are true, false, yes, and no.
            </summary>
        </member>
        <member name="F:Centido.Core.SqlServerConnectionStringBuilder._replication">
            <summary>
              True if replication is supported using the connection.
            </summary>
        </member>
        <member name="F:Centido.Core.SqlServerConnectionStringBuilder._transactionBinding">
            <summary>
              Controls connection association with an enlisted System.Transactions transaction.
            </summary>
        </member>
        <member name="F:Centido.Core.SqlServerConnectionStringBuilder._trustServerCertificate">
            <summary>
              When set to true, SSL is used to encrypt the channel when bypassing walking the certificate chain to validate trust.
            </summary>
        </member>
        <member name="F:Centido.Core.SqlServerConnectionStringBuilder._typeSystemVersion">
            <summary>
              A string value that indicates the type system the application expects.
            </summary>
        </member>
        <member name="F:Centido.Core.SqlServerConnectionStringBuilder._userId">
            <summary>
              A value that indicates whether to redirect the connection from the default SQL Server Express instance to a runtime-initiated instance running under the account of the caller.
            </summary>
        </member>
        <member name="F:Centido.Core.SqlServerConnectionStringBuilder._workstationId">
            <summary>
              The name of the workstation connecting to SQL Server.
            </summary>
        </member>
        <member name="M:Centido.Core.SqlServerConnectionStringBuilder.Build">
            <summary>
              Builds a connection string
            </summary>
            <returns>Returns the built connection string</returns>
        </member>
        <member name="M:Centido.Core.SqlServerConnectionStringBuilder.Parse(System.String)">
            <summary>
              Parses connection string parameters
            </summary>
            <param name = "connectionString">Indicates the connection string</param>
        </member>
        <member name="M:Centido.Core.SqlServerConnectionStringBuilder.CreateNew">
            <summary>
              Creates a new connection string builder of the current type.
            </summary>
            <returns>Returns a new connection string builder that has the same type
            as the current one.</returns>
        </member>
        <member name="P:Centido.Core.SqlServerConnectionStringBuilder.Async">
            <summary>
              When true, enables asynchronous operation support. Recognized values are true, false, yes, and no.
            </summary>
        </member>
        <member name="P:Centido.Core.SqlServerConnectionStringBuilder.ConnectionTimeout">
            <summary>
              The length of time (in seconds) to wait for a connection to the server before terminating the attempt and generating an error.
            </summary>
        </member>
        <member name="P:Centido.Core.SqlServerConnectionStringBuilder.ConnectionLifetime">
            <summary>
              When a connection is returned to the pool, its creation time is compared with the current time, and the connection is destroyed if that time span (in seconds) exceeds the value specified by Connection Lifetime. This is useful in clustered configurations to force load balancing between a running server and a server just brought online. A value of zero (0) causes pooled connections to have the maximum connection timeout.
            </summary>
        </member>
        <member name="P:Centido.Core.SqlServerConnectionStringBuilder.ContextConnection">
            <summary>
              True if an in-process connection to SQL Server should be made.
            </summary>
        </member>
        <member name="P:Centido.Core.SqlServerConnectionStringBuilder.ConnectionReset">
            <summary>
              Determines whether the database connection is reset when being removed from the pool. Setting to 'false' avoids making an additional server round-trip when obtaining a connection, but the programmer must be aware that the connection state is not being reset.
            </summary>
        </member>
        <member name="P:Centido.Core.SqlServerConnectionStringBuilder.CurrentLanguage">
            <summary>
              The SQL Server Language record name.
            </summary>
        </member>
        <member name="P:Centido.Core.SqlServerConnectionStringBuilder.Encrypt">
            <summary>
              When true, SQL Server uses SSL encryption for all data sent between the client and server if the server has a certificate installed. Recognized values are true, false, yes, and no.
            </summary>
        </member>
        <member name="P:Centido.Core.SqlServerConnectionStringBuilder.Enlist">
            <summary>
              When true, the pooler automatically enlists the connection in the creation thread's current transaction context. Recognized values are true, false, yes, and no.
            </summary>
        </member>
        <member name="P:Centido.Core.SqlServerConnectionStringBuilder.FailoverPartner">
            <summary>
              The name of the failover partner server where database mirroring is configured.
            </summary>
        </member>
        <member name="P:Centido.Core.SqlServerConnectionStringBuilder.LoadBalanceTimeout">
            <summary>
              The minimum time, in seconds, for the connection to live in the connection pool before being destroyed.
            </summary>
        </member>
        <member name="P:Centido.Core.SqlServerConnectionStringBuilder.MultipleActiveResultSets">
            <summary>
              When true, an application can maintain multiple active result sets (MARS). When false, an application must process or cancel all result sets from one batch before it can execute any other batch on that connection. Recognized values are true and false.
            </summary>
        </member>
        <member name="P:Centido.Core.SqlServerConnectionStringBuilder.MaxPoolSize">
            <summary>
              The maximum number of connections allowed in the pool.
            </summary>
        </member>
        <member name="P:Centido.Core.SqlServerConnectionStringBuilder.MinPoolSize">
            <summary>
              The minimum number of connections allowed in the pool.
            </summary>
        </member>
        <member name="P:Centido.Core.SqlServerConnectionStringBuilder.PacketSize">
            <summary>
              Size in bytes of the network packets used to communicate with an instance of SQL Server.
            </summary>
        </member>
        <member name="P:Centido.Core.SqlServerConnectionStringBuilder.PersistSecurityInfo">
            <summary>
              When set to 'false' (strongly recommended), security-sensitive information, such as the password, is not returned as part of the connection if the connection is open or has ever been in an open state. Resetting the connection string resets all connection string values including the password.
            </summary>
        </member>
        <member name="P:Centido.Core.SqlServerConnectionStringBuilder.Pooling">
            <summary>
              When true, the SQLConnection object is drawn from the appropriate pool, or if necessary, is created and added to the appropriate pool. Recognized values are true, false, yes, and no.
            </summary>
        </member>
        <member name="P:Centido.Core.SqlServerConnectionStringBuilder.Replication">
            <summary>
              True if replication is supported using the connection.
            </summary>
        </member>
        <member name="P:Centido.Core.SqlServerConnectionStringBuilder.TransactionBinding">
            <summary>
              Controls connection association with an enlisted System.Transactions transaction.
            </summary>
        </member>
        <member name="P:Centido.Core.SqlServerConnectionStringBuilder.TrustServerCertificate">
            <summary>
              When set to true, SSL is used to encrypt the channel when bypassing walking the certificate chain to validate trust.
            </summary>
        </member>
        <member name="P:Centido.Core.SqlServerConnectionStringBuilder.TypeSystemVersion">
            <summary>
              A string value that indicates the type system the application expects.
            </summary>
        </member>
        <member name="P:Centido.Core.SqlServerConnectionStringBuilder.UserId">
            <summary>
              A value that indicates whether to redirect the connection from the default SQL Server Express instance to a runtime-initiated instance running under the account of the caller.
            </summary>
        </member>
        <member name="P:Centido.Core.SqlServerConnectionStringBuilder.WorkstationId">
            <summary>
              The name of the workstation connecting to SQL Server.
            </summary>
        </member>
        <member name="P:Centido.Core.SqlServerConnectionStringBuilder.DbProviderTypeName">
            <summary>
              Gets database provider type name
            </summary>
        </member>
        <member name="T:Centido.Core.Dto.RoleDto">
            <summary>
              A data transfering object for a security role.
            </summary>
        </member>
        <member name="M:Centido.Core.Dto.RoleDto.GetSchema">
            <summary>
              This method is reserved and should not be used. When implementing the IXmlSerializable interface, you should return null (Nothing in Visual Basic) from this method, and instead, if specifying a custom schema is required, apply the <see cref="T:System.Xml.Serialization.XmlSchemaProviderAttribute"/> to the class.
            </summary>
            <returns>
              An <see cref="T:System.Xml.Schema.XmlSchema"/> that describes the XML representation of the object that is produced by the <see cref="M:System.Xml.Serialization.IXmlSerializable.WriteXml(System.Xml.XmlWriter)"/> method and consumed by the <see cref="M:System.Xml.Serialization.IXmlSerializable.ReadXml(System.Xml.XmlReader)"/> method.
            </returns>
        </member>
        <member name="M:Centido.Core.Dto.RoleDto.ReadXml(System.Xml.XmlReader)">
            <summary>
              Generates an object from its XML representation.
            </summary>
            <param name="reader">The <see cref="T:System.Xml.XmlReader"/> stream from which the object is deserialized. 
            </param>
        </member>
        <member name="M:Centido.Core.Dto.RoleDto.WriteXml(System.Xml.XmlWriter)">
            <summary>
              Converts an object into its XML representation.
            </summary>
            <param name="writer">The <see cref="T:System.Xml.XmlWriter"/> stream to which the object is serialized. 
            </param>
        </member>
        <member name="T:Centido.Core.Unit">
            <summary>
              A business unit.
            </summary>
            <remarks>A business unit is a group of users that can be used
            to define the scope of security permissions. For instance,
            a table permission can be defined as to allow the selection of rows
            created by users of the same business unit.</remarks>
        </member>
        <member name="F:Centido.Core.Unit._domain">
            <summary>
              The current domain.
            </summary>
        </member>
        <member name="F:Centido.Core.Unit._name">
            <summary>
              The name of the unit.
            </summary>
        </member>
        <member name="F:Centido.Core.Unit._displayName">
            <summary>
              The display name of the unit.
            </summary>
        </member>
        <member name="M:Centido.Core.Unit.#ctor(System.Guid,Centido.Core.Domain)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.Unit"/> class
            for the specified unit id and the specified domain.
            </summary>
            <param name="unitId">The unit id.</param>
            <param name="domain">The current domain.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="domain"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Unit.GetRawId">
            <summary>
              Retrives the current unit id in the form of a byte array.
            </summary>
            <returns>Returns the current unit id in a form of a byte array.</returns>
        </member>
        <member name="M:Centido.Core.Unit.Exists">
            <summary>
              Checks the existence of the unit.
            </summary>
            <returns>Returns true if the unit still exists; otherwise, returns false.</returns>
        </member>
        <member name="M:Centido.Core.Unit.Delete">
            <summary>
              Deletes the current business unit.
            </summary>
            <remarks>The current user has to have the permission to change security settings in
            order to execute this function.</remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no
            permission to execute this function.</exception>
            <example>
              The following example shows how to delete a business unit.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a unit
                        var unit = domain.AddUnit();
            
                        //Defining the parent and child units
                        var childUnit = domain.AddUnit();
                        var parentUnit = domain.AddUnit();
            
                        childUnit.AddParent(unit);
                        unit.AddParent(parentUnit);
            
                        //Adding the current user to the unit
                        unit.AddUser(domain.CurrentUser);
            
                        Console.WriteLine("Child unit: parent unit count = {0}",
                            childUnit.Parents.Count());
                        Console.WriteLine("Parent unit: child unit count = {0}",
                            parentUnit.ChildUnits.Count());
                        Console.WriteLine("Current user: unit count = {0}",
                            domain.CurrentUser.Units.Count());
            
                        Console.WriteLine("Deleting the unit");
            
                        unit.Delete();
            
                        Console.WriteLine("Child unit: parent unit count = {0}",
                            childUnit.Parents.Count());
                        Console.WriteLine("Parent unit: child unit count = {0}",
                            parentUnit.ChildUnits.Count());
                        Console.WriteLine("Current user: unit count = {0}",
                            domain.CurrentUser.Units.Count());
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Unit.AddParent(Centido.Core.Unit)">
            <summary>
              Adds the specified unit to the parent units of the current unit.
            </summary>
            <remarks>The current user has to have the permission to change
            security settings in order to execute this function.</remarks>
            <param name="parentUnit">The unit to be added as a parent unit.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="parentUnit"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission
            to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the specified unit was
            already added as a parent unit of the current unit.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when adding the specified parent unit
            results in forming a cycle of units.</exception>
            <example>
              The following example shows how to build a hierarchy of units.
            <code>
                using System;
                using System.Data.Common;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a hierarchy of units
                        var unit_1 = domain.AddUnit();
                        var unit_2 = domain.AddUnit();
                        var unit_3 = domain.AddUnit();
            
                        unit_1.AddParent(unit_2);
                        unit_2.AddParent(unit_3);
            
                        //Trying to build a cycle of units
                        try
                        {
                            unit_3.AddParent(unit_1);
                        }
                        catch(DbException)
                        {
                            Console.WriteLine("Building a cycle of units is forbidden");
                        }
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Unit.AddParent(System.Guid)">
            <summary>
              Adds a unit with the specified id to the parent units of the current unit.
            </summary>
            <remarks>The current user has to have the permission to change
            security settings in order to execute this function.</remarks>
            <param name="parentUnitId">The id of the unit to be added as a parent unit.</param>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission
            to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when a unit with the same id was
            already added as a parent unit of the current unit.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when adding the specified parent unit
            results in forming a cycle of units.</exception>
            <example>
              The following example shows how to build a hierarchy of units.
            <code>
                using System;
                using System.Data.Common;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a hierarchy of units
                        var unit_1 = domain.AddUnit();
                        var unit_2 = domain.AddUnit();
                        var unit_3 = domain.AddUnit();
            
                        unit_1.AddParent(unit_2.Id);
                        unit_2.AddParent(unit_3.Id);
            
                        //Trying to build a cycle of units
                        try
                        {
                            unit_3.AddParent(unit_1.Id);
                        }
                        catch(DbException)
                        {
                            Console.WriteLine("Building a cycle of units is forbidden");
                        }
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Unit.DeleteParent(Centido.Core.Unit)">
            <summary>
              Deletes the specified unit from the parent units of the current unit.
            </summary>
            <param name="parentUnit">The unit to be deleted from the parent units of
            the current unit.</param>
            <remarks>The current user has to have the permission to change security
            settings in order to execute this function.</remarks>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="parentUnit"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no
            permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is no such
            parent unit of the current unit.</exception>
            <example>
              The following example shows how to delete a unit from parent units of another unit.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                     
                        //Building a hierarchy of units
                        var childUnit = domain.AddUnit();
                        var parentUnit = domain.AddUnit();
                        
                        childUnit.AddParent(parentUnit);
            
                        Console.WriteLine("Child unit: parent count = {0}", childUnit.Parents.Count());
                        Console.WriteLine("Parent unit: children count = {0}", parentUnit.ChildUnits.Count());
            
                        Console.WriteLine("Removing the link between the parent and the child unit");
            
                        childUnit.DeleteParent(parentUnit);
            
                        Console.WriteLine("Child unit: parent count = {0}", childUnit.Parents.Count());
                        Console.WriteLine("Parent unit: children count = {0}", parentUnit.ChildUnits.Count());
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Unit.DeleteParent(System.Guid)">
            <summary>
              Deletes a unit with the specified id from the parent units of the current unit.
            </summary>
            <param name="parentUnitId">The unit to be deleted from the parent units of
            the current unit.</param>
            <remarks>The current user has to have the permission to change security
            settings in order to execute this function.</remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no
            permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is no such
            parent unit of the current unit.</exception>
            <example>
              The following example shows how to delete a unit from parent units of another unit.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                     
                        //Building a hierarchy of units
                        var childUnit = domain.AddUnit();
                        var parentUnit = domain.AddUnit();
                        
                        childUnit.AddParent(parentUnit);
            
                        Console.WriteLine("Child unit: parent count = {0}", childUnit.Parents.Count());
                        Console.WriteLine("Parent unit: children count = {0}", parentUnit.ChildUnits.Count());
            
                        Console.WriteLine("Removing the link between the parent and the child unit");
            
                        childUnit.DeleteParent(parentUnit.Id);
            
                        Console.WriteLine("Child unit: parent count = {0}", childUnit.Parents.Count());
                        Console.WriteLine("Parent unit: children count = {0}", parentUnit.ChildUnits.Count());
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Unit.AddUser(Centido.Core.IUser)">
            <summary>
              Adds the specified user to the current unit.
            </summary>
            <remarks>The current user has to have the permission to change
            security settings in order to execute this function.</remarks>
            <param name="user">The user to be added to the current unit.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="user"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission
            to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the specified user was
            already added to the current unit.</exception>
            <example>
            <code>
              The following example shows how to add users to a business unit.
            </code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                     
                        //Creating a unit
                        var unit = domain.AddUnit();
            
                        //Adding users to the unit
                        unit.AddUser(domain.CurrentUser);
            
                        var user = domain.AddUser("my_user", "P@ssw0rd");
                        unit.AddUser(user);
            
                        Console.WriteLine("Unit users:");
            
                        foreach(var u in unit.Users)
                            Console.WriteLine("\t{0}", u.Name);
                    }
                }
            </example>
        </member>
        <member name="M:Centido.Core.Unit.AddUser(System.String)">
            <summary>
              Adds a user with the specified name to the current unit.
            </summary>
            <remarks>
            <para>The name of the user to be added to the current unit is lowered and trimmed.</para>
            <para>The current user has to have the permission to change
            security settings in order to execute this function.</para></remarks>
            <param name="userName">The name of the user to be added to the current unit.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="userName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="userName"/> is an empty string.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission
            to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the specified user was
            already added to the current unit.</exception>
            <example>
            <code>
              The following example shows how to add users to a business unit.
            </code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                     
                        //Creating a unit
                        var unit = domain.AddUnit();
            
                        //Adding users to the unit
                        unit.AddUser(domain.CurrentUser.Name);
            
                        var user = domain.AddUser("my_user", "P@ssw0rd");
                        unit.AddUser(user.Name);
            
                        Console.WriteLine("Unit users:");
            
                        foreach(var u in unit.Users)
                            Console.WriteLine("\t{0}", u.Name);
                    }
                }
            </example>
        </member>
        <member name="M:Centido.Core.Unit.DeleteUser(Centido.Core.IUser)">
            <summary>
              Deletes the specified user from the current unit.
            </summary>
            <remarks>The current user has to have the permission to change security settings
            in order to execute this function.</remarks>
            <param name="user">The user to be deleted from the current unit.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="user"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission
            to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown the current unit doesn't contain the
            specified user.</exception>
            <example>
              The following example shows how to delete a user from a business unit.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                     
                        //Creating a unit
                        var unit = domain.AddUnit();
            
                        //Adding the current user to the unit
                        unit.AddUser(domain.CurrentUser);
            
                        Console.WriteLine("Unit: user count = {0}", unit.Users.Count());
                        Console.WriteLine("Current user: unit count = {0}", domain.CurrentUser.Units.Count());
            
                        Console.WriteLine("Deleting the current user from the unit");
            
                        unit.DeleteUser(domain.CurrentUser);
            
                        Console.WriteLine("Unit: user count = {0}", unit.Users.Count());
                        Console.WriteLine("Current user: unit count = {0}", domain.CurrentUser.Units.Count());
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Unit.DeleteUser(System.String)">
            <summary>
              Deletes a user with the specified name from the current unit.
            </summary>
            <remarks>The current user has to have the permission to change security settings
            in order to execute this function.</remarks>
            <param name="userName">The user to be deleted from the current unit.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="userName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="userName"/> is an empty string.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission
            to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown the current unit doesn't contain the
            specified user.</exception>
            <example>
              The following example shows how to delete a user from a business unit.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                     
                        //Creating a unit
                        var unit = domain.AddUnit();
            
                        //Adding the current user to the unit
                        unit.AddUser(domain.CurrentUser);
            
                        Console.WriteLine("Unit: user count = {0}", unit.Users.Count());
                        Console.WriteLine("Current user: unit count = {0}", domain.CurrentUser.Units.Count());
            
                        Console.WriteLine("Deleting the current user from the unit");
            
                        unit.DeleteUser(domain.CurrentUser.Name);
            
                        Console.WriteLine("Unit: user count = {0}", unit.Users.Count());
                        Console.WriteLine("Current user: unit count = {0}", domain.CurrentUser.Units.Count());
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Unit.ReadProperty(System.String)">
            <summary>
              Reads the current unit property.
            </summary>
            <param name = "propertyName">The property name.</param>
            <returns>Returns the property value.</returns>
        </member>
        <member name="M:Centido.Core.Unit.WriteProperty(System.String,System.Object,System.Data.OdbcType)">
            <summary>
              Updates the current unit property.
            </summary>
            <param name = "propertyName">The property name.</param>
            <param name = "propertyValue">The property value.</param>
            <param name = "propertyType">The property database type.</param>
        </member>
        <member name="M:Centido.Core.Unit.Refresh">
            <summary>
              Refreshes the properties of the current unit.
            </summary>
        </member>
        <member name="P:Centido.Core.Unit.Domain">
            <summary>
              Gets the current domain.
            </summary>
        </member>
        <member name="P:Centido.Core.Unit.Name">
            <summary>
              Gets or sets the unit name.
            </summary>
            <remarks>
            <para>By default the unit name is null but if it is set it should be unique among all units.</para>
            <para>The current user has to have the permission to change security settings
            in order to set this property.</para> 
            </remarks>
            <exception cref="N:System.Data.Common">Thrown when the current user has no permission
            to set this property.</exception>
            
            <example>
              The following example shows how to set the name of a business unit.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a unit
                        var unit = domain.AddUnit();
            
                        unit.Name = "my_unit";
            
                        Console.WriteLine("Unit name = {0}", unit.Name);
            
                        //Creating another unit
                        var anotherUnit = domain.AddUnit();
            
                        try
                        {
                            //Trying to set the unit name to the same value
                            anotherUnit.Name = "my_unit";
                        }
                        catch(DbException)
                        {
                            Console.WriteLine("Unit names must be unique.");
                        }
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.Unit.DisplayName">
            <summary>
              Gets or sets the unit display name.
            </summary>
            <remarks>The current user has to have the permission to change security settings
            in order to set this property.</remarks>
            <exception cref="N:System.Data.Common">Thrown when the current user has no permission
            to set this property.</exception>
            <example>
              The following example shows how to set the display name of a business unit.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a unit
                        var unit = domain.AddUnit();
            
                        unit.DisplayName = "The display name of the unit";
            
                        Console.WriteLine("Unit display name = {0}", unit.DisplayName);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.Unit.Parents">
            <summary>
              Gets the parent units of the current unit.
            </summary>
            <example>
              The following example shows how to get the parent units of a business unit.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a child unit
                        var childUnit = domain.AddUnit();
            
                        //Creating two top units
                        var firstTopUnit = domain.AddUnit();
                        firstTopUnit.DisplayName = "The first top unit";
            
                        var secondTopUnit = domain.AddUnit();
                        secondTopUnit.DisplayName = "The second top unit";
            
                        childUnit.AddParent(firstTopUnit);
                        childUnit.AddParent(secondTopUnit);
            
                        Console.WriteLine("Parent units:");
            
                        foreach(var unit in childUnit.Parents)
                            Console.WriteLine("\t{0}", unit.DisplayName);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.Unit.ChildUnits">
            <summary>
              Gets the child units of the current business unit.
            </summary>
            <example>
              The following example shows how to get the child units of a business unit.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a top unit
                        var topUnit = domain.AddUnit();
            
                        //Creating two child units
                        var firstChildUnit = domain.AddUnit();
                        firstChildUnit.DisplayName = "The first child unit";
            
                        var secondChildUnit = domain.AddUnit();
                        secondChildUnit.DisplayName = "The second child unit";
            
                        firstChildUnit.AddParent(topUnit);
                        secondChildUnit.AddParent(topUnit);
            
                        Console.WriteLine("Child units:");
            
                        foreach(var unit in topUnit.ChildUnits)
                            Console.WriteLine("\t{0}", unit.DisplayName);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.Unit.Users">
            <summary>
              Gets the users added to the current business unit.
            </summary>
            <example>
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a unit
                        var unit = domain.AddUnit();
            
                        //Adding users to the unit
                        unit.AddUser(domain.CurrentUser);
            
                        var user = domain.AddUser("my_user", "P@ssw0rd");
                        
                        unit.AddUser(user);
            
                        Console.WriteLine("The unit users:");
            
                        foreach(var u in unit.Users)
                            Console.WriteLine("\t{0}", u.Name);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.Unit.Id">
            <summary>
              Gets the current unit id.
            </summary>
        </member>
        <member name="T:Centido.Core.RefTarget">
            <summary>
              A reference column target.
            </summary>
            <remarks>A reference column can point to many tables including
            the parent table itself. A reference target should be created for each
            of those tables and stores additional information
            about the need for cascade delete, table back display name etc.</remarks>
            <example>
              The following example shows how to create reference column targets.
            <code>
                using System;
                using System.Data.Common;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Adding two tables
                        var firstTable = domain.AddTable("first_table");
                        var secondTable = domain.AddTable("second_table");
            
                        firstTable.GrantAll();
                        secondTable.GrantAll();
                        
                        //Creating a reference column
                        var column = firstTable.AddColumn("ref_column", ColumnType.Reference)
                            as RefColumn;
            
                        //Adding reference targets
                        column.AddTarget(firstTable).CascadeDelete = true; //This is a self-reference
                        column.AddTarget(secondTable).CascadeDelete = true;  
            
                        //Inserting some rows
                        var secondTableRowId = secondTable.InsertRow();
                        var firstTableRowId = firstTable.InsertRow(column.Value(secondTableRowId));
                        firstTable.InsertRow(column.Value(firstTableRowId)); //This is a self-reference
            
                        //Trying to insert an invalid value
                        try
                        {
                            firstTable.InsertRow(column.Value(Guid.NewGuid()));
                        }
                        catch(DbException)
                        {
                            Console.WriteLine("Inserting an invalid value is forbidden");
                        }
            
                        Console.WriteLine("The first table: row count = {0}", firstTable.RowCount);
                        Console.WriteLine("The second table: row count = {0}", secondTable.RowCount);
            
                        Console.WriteLine("Deleting the first row in the chain of rows");
            
                        secondTable.DeleteRow(secondTableRowId);
            
                        Console.WriteLine("The first table: row count = {0}", firstTable.RowCount);
                        Console.WriteLine("The second table: row count = {0}", secondTable.RowCount);
                    }
                }  
            </code>
            </example>
        </member>
        <member name="F:Centido.Core.RefTarget._column">
            <summary>
              The parent reference column.
            </summary>
        </member>
        <member name="F:Centido.Core.RefTarget._refTable">
            <summary>
              The target table.
            </summary>
        </member>
        <member name="M:Centido.Core.RefTarget.#ctor(Centido.Core.RefColumn,Centido.Core.Table)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.RefTarget"/> class
              for the specified column and target table.
            </summary>
            <param name="column">The parent reference column.</param>
            <param name="refTable">The target table.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="column"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="refTable"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.RefTarget.Delete">
            <summary>
              Deletes the reference target.
            </summary>
            <remarks>
            <para>Deleting a reference target results in setting the column to null for those rows that contain
            references on the target to be deleted.</para>
            <para>The current user has to have the permission to change the schema in order to execute this function.</para>
            </remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is no such reference target.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the column is not nullable and there are rows that contain
            references on the target to be deleted.</exception>
            <example>
              The following example shows how to delete a reference target.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Adding two tables
                        var firstTable = domain.AddTable("first_table");
                        var secondTable = domain.AddTable("second_table");
                        firstTable.GrantAll();
                        secondTable.GrantAll();
                        
                        //Creating a reference column
                        var column = firstTable.AddColumn("ref_column", ColumnType.Reference)
                            as RefColumn;
            
                        //Adding a reference target
                        column.AddTarget(secondTable);
            
                        //Inserting a row into the second table
                        var secondTableRowId = secondTable.InsertRow();
            
                        //Inserting a row into the first table
                        var firstTableRowId = firstTable.InsertRow(column.Value(secondTableRowId));
            
                        //Reading the reference
                        Console.WriteLine("Reference: value = {0}", column.Read(firstTableRowId).GetGuid());
            
                        //Deleting the reference target
                        Console.WriteLine("Deleting the reference target");
            
                        column.DeleteTarget(secondTable);
            
                        //Reading the reference
                        Console.WriteLine("Reference: value = {0}", column.Read(firstTableRowId).GetGuid());
                    }
                }   
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.RefTarget.Exists">
            <summary>
              Checks the existence of the reference target.
            </summary>
            <returns>Returns true if the reference target still exists; otherwise, returns false.</returns>
        </member>
        <member name="M:Centido.Core.RefTarget.ReadProperty(System.String)">
            <summary>
              Reads the reference target property.
            </summary>
            <param name = "propertyName">The property name.</param>
            <returns>Returns the property value.</returns>
        </member>
        <member name="M:Centido.Core.RefTarget.WriteProperty(System.String,System.Object,System.Data.OdbcType)">
            <summary>
              Updates the reference target property.
            </summary>
            <param name = "propertyName">The property name.</param>
            <param name = "propertyValue">The property value.</param>
            <param name = "propertyType">The property value database type.</param>
        </member>
        <member name="P:Centido.Core.RefTarget.Domain">
            <summary>
              Gets the parent domain.
            </summary>
        </member>
        <member name="P:Centido.Core.RefTarget.Column">
            <summary>
              Gets the parent reference column.
            </summary>
        </member>
        <member name="P:Centido.Core.RefTarget.RefTable">
            <summary>
              Gets the table that the target points to.
            </summary>
        </member>
        <member name="P:Centido.Core.RefTarget.Table">
            <summary>
            Gets the parent table.
            </summary>
        </member>
        <member name="P:Centido.Core.RefTarget.CascadeDelete">
            <summary>
              Gets or sets the need to cascade delete rows
            that reference the row to be deleted.
            </summary>
            <remarks>When the data source is the user view then deleting one row may trigger deleting other rows,
            if they have a reference on the row to be deleted
            and that reference has the CascadeDelete property set to true. If one reference in such a chain
            has the CascadeDelete property set to false then the whole transaction is cancelled
            and an exception is thrown.
            When the data source is the internal table then the deletion is taken place as if
            the property CascadeDelete was set to true on all references.</remarks>
            <example>
              The following example shows how to delete a chain of rows.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Adding two tables
                        var firstTable = domain.AddTable("first_table");
                        var secondTable = domain.AddTable("second_table");
                        
                        firstTable.GrantAll();
                        secondTable.GrantAll();
            
                        //Creating a reference column
                        var column = firstTable.AddColumn("ref_column", ColumnType.Reference)
                            as RefColumn;
            
                        column.AddTarget(firstTable).CascadeDelete = true;
                        column.AddTarget(secondTable).CascadeDelete = true;
            
                        //Building a chain of rows
                        var secondTableRowId = secondTable.InsertRow();
                        var firstTableRowId = firstTable.InsertRow(column.Value(secondTableRowId)); 
                        firstTable.InsertRow(column.Value(firstTableRowId));
            
                        Console.WriteLine("The first table: row count = {0}", firstTable.RowCount);
                        Console.WriteLine("The second table: row count = {0}", secondTable.RowCount);
            
                        Console.WriteLine("Deleting the chain of rows");
            
                        secondTable.DeleteRow(secondTableRowId);
            
                        Console.WriteLine("The first table: row count = {0}", firstTable.RowCount);
                        Console.WriteLine("The second table: row count = {0}", secondTable.RowCount);
                    }
                }
            </code>
            </example>
        </member>
        <member name="T:Centido.Core.DbmsInfo">
            <summary>
              The database and installed metadata properties.
            </summary>
            <remarks>
              This class is used to describe what database is used and what metadata is installed
              when using the corresponding domain.
            </remarks>
            <seealso cref="T:Centido.Core.Domain"/>
        </member>
        <member name="F:Centido.Core.DbmsInfo._domain">
            <summary>
              The current domain.
            </summary>
        </member>
        <member name="F:Centido.Core.DbmsInfo._productName">
            <summary>
              The dbms product name.
            </summary>
        </member>
        <member name="F:Centido.Core.DbmsInfo._productVersion">
            <summary>
              The dbms product version.
            </summary>
        </member>
        <member name="F:Centido.Core.DbmsInfo._columnRenaming">
            <summary>
              The column renaming feature availability.
            </summary>
        </member>
        <member name="F:Centido.Core.DbmsInfo._regularExpressions">
            <summary>
              The regular expressions feature availability.
            </summary>
        </member>
        <member name="M:Centido.Core.DbmsInfo.#ctor(Centido.Core.Domain)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.DbmsInfo"/> class.
            </summary>
            <param name="domain">The current domain.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="domain"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.DbmsInfo.AdjustDbmsFeatures">
            <summary>
              Checks the database version and vendor and adjusts available features if necessary.
            </summary>
        </member>
        <member name="M:Centido.Core.DbmsInfo.ReadFeatureAvailability(System.String)">
            <summary>
              Retrieves the specified feature avalilability.
            </summary>
            <param name = "featureName">The specified feature name.</param>
            <returns>Returns true if the specified feature is available; otherwise returns false.</returns>
        </member>
        <member name="M:Centido.Core.DbmsInfo.SetFeatureAvailability(System.String,System.Boolean)">
            <summary>
              Sets the specified feature availability.
            </summary>
            <param name = "featureName">The specified feature name.</param>
            <param name = "isEnabled">True if the specified feature is available; otherwise false.</param>
        </member>
        <member name="M:Centido.Core.DbmsInfo.Refresh">
            <summary>
              Refreshes the metadata properties.
            </summary>
        </member>
        <member name="P:Centido.Core.DbmsInfo.ProductName">
            <summary>
              Gets the database management system name.
            </summary>
            <value>The name of the database management system.</value>
        </member>
        <member name="P:Centido.Core.DbmsInfo.ProductVersion">
            <summary>
              Gets the database management system version.
            </summary>
            <value>The string representation of the database management system version.</value>
        </member>
        <member name="P:Centido.Core.DbmsInfo.ColumnRenaming">
            <summary>
              Gets the column renaming feature availability.
            </summary>
            <value>True if the current database management system supports column renaming; otherwise, false.</value>
        </member>
        <member name="P:Centido.Core.DbmsInfo.RegularExpressions">
            <summary>
              Gets the regular expressions feature availability.
            </summary>
            <value>True if the current database management system supports regular expressions; otherwise, false.</value>
        </member>
        <member name="T:Centido.Core.Dto.EnumColumnDto">
            <summary>
              A data transfering object for an enumeration table column.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.EnumColumnDto.XmlTag">
            <summary>
              The name of the xml tag that is used to store this object.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.EnumColumnDto.CurrentXmlSchemaVersion">
            <summary>
              The current xml schema version.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.EnumColumnDto.DefaultValueTag">
            <summary>
              The name of the xml tag that is used to store a column default value.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.EnumColumnDto.ValueCheckingTag">
            <summary>
              The name of the xml tag that is used to store the availability of the enum value checking.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.EnumColumnDto.MemberListTag">
            <summary>
              The name of the tag that is used to store the enumeration member list.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.EnumColumnDto._enumMembers">
            <summary>
              The list enumeration column members.
            </summary>
        </member>
        <member name="M:Centido.Core.Dto.EnumColumnDto.AddMember(Centido.Core.Dto.EnumMemberDto)">
            <summary>
              Adds the specified enumeration column member.
            </summary>
            <param name="memberDto">The enumeration column member to be added.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="memberDto"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.EnumColumnDto.DeleteMember(Centido.Core.Dto.EnumMemberDto)">
            <summary>
              Removes the specfied enumeration member.
            </summary>
            <param name="memberDto">The enumeration column member to be removed.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="memberDto"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.EnumColumnDto.GetSchema">
            <summary>
              This method is reserved and should not be used. When implementing the IXmlSerializable interface, you should return null (Nothing in Visual Basic) from this method, and instead, if specifying a custom schema is required, apply the <see cref="T:System.Xml.Serialization.XmlSchemaProviderAttribute"/> to the class.
            </summary>
            <returns>
              An <see cref="T:System.Xml.Schema.XmlSchema"/> that describes the XML representation of the object that is produced by the <see cref="M:System.Xml.Serialization.IXmlSerializable.WriteXml(System.Xml.XmlWriter)"/> method and consumed by the <see cref="M:System.Xml.Serialization.IXmlSerializable.ReadXml(System.Xml.XmlReader)"/> method.
            </returns>
        </member>
        <member name="M:Centido.Core.Dto.EnumColumnDto.ReadXml(System.Xml.XmlReader)">
            <summary>
              Generates an object from its XML representation.
            </summary>
            <param name="reader">The <see cref="T:System.Xml.XmlReader"/> stream from which the object is deserialized. 
            </param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="reader"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.EnumColumnDto.WriteXml(System.Xml.XmlWriter)">
            <summary>
              Converts an object into its XML representation.
            </summary>
            <param name="writer">The <see cref="T:System.Xml.XmlWriter"/> stream to which the object is serialized. 
            </param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="writer"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.EnumColumnDto.CopyTo(Centido.Core.EnumColumn)">
            <summary>
              Copies the properties of the data transfer object to the
            specified enumeration column.
            </summary>
            <param name="enumColumn">The enumeration column.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="enumColumn"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.EnumColumnDto.CreateFrom(Centido.Core.EnumColumn)">
            <summary>
              Creates a data transfer object for the specified enumeration column.
            </summary>
            <param name="enumColumn">The specified enumeration column.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="enumColumn"/> is null.</exception>
            <returns>Returns the data transfer object for the specified enumeration column.</returns>
        </member>
        <member name="P:Centido.Core.Dto.EnumColumnDto.DefaultValue">
            <summary>
              Gets or sets the default value of the column.
            </summary>
        </member>
        <member name="P:Centido.Core.Dto.EnumColumnDto.ValueChecking">
            <summary>
              Gets or sets the availability of the enum value checking.
            </summary>
        </member>
        <member name="P:Centido.Core.Dto.EnumColumnDto.Members">
            <summary>
              Gets the enumeration column members.
            </summary>
        </member>
        <member name="T:Centido.Core.Db">
            <summary>
              Database related constants.
            </summary>
            <remarks>
              This class is a central place of storing all database related constants.
            </remarks>
        </member>
        <member name="T:Centido.Core.Db.Procedures">
            <summary>
              Database procedure constants.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.GetDbName">
            <summary>
              The name of the procedure that returns the current database name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.GetDbmsName">
            <summary>
              The name of the procedure that returns the database management system name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.GetDbmsVersion">
            <summary>
              The name of the procedure that returns the database management system version.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.AddTable">
            <summary>
              The name of the procedure that creates a new user-defined table.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.DeleteTable">
            <summary>
              The name of the procedure that deletes a user-defined table.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.RenameTable">
            <summary>
              The name of the procedure that renames a user-defined table.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.AddStringColumn">
            <summary>
              The name of the procedure that creates a string table column.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.DeleteColumn">
            <summary>
              The name of the procedure that deleted a table column.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.SetStringColumnDefaultValue">
            <summary>
              The name of the procedure that sets string column default value.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.SetColumnNullability">
            <summary>
              The name of the procedure that sets table column nullability.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.SetStringColumnEmptiness">
            <summary>
              The name of the procedure that sets string column emptiness.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.SetStringColumnMaxLength">
            <summary>
              The name of the procedure that sets string column maximum length.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.SetStringRegularExpression">
            <summary>
              The name of the procedure that sets string column regular expression.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.RenameColumn">
            <summary>
              The name of the procedure that renames a table column.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.AddReferenceColumn">
            <summary>
              The name of the procedure that created a reference table column.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.SetReferenceColumnDefaultValue">
            <summary>
              The name of the procedure tha sets reference table column default value.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.AddReferenceTarget">
            <summary>
              The name of the procedure that creates a reference table column target.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.DeleteReferenceTarget">
            <summary>
              The name of the procedure that deleted a reference table column target.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.SetReferenceChecking">
            <summary>
              The name of the procedure that enables or disables reference checking trigger.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.AddEnumColumn">
            <summary>
              The name of the procedure that creates an enumaration table column.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.AddEnumMember">
            <summary>
              The name of the procedure that creates an enumeration table column member.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.DeleteEnumMember">
            <summary>
              The name of the procedure that deletes an enumeration table column member.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.SetEnumMemberValue">
            <summary>
              The name of the procedure that sets an enumeration table column member value.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.SetEnumDefaultValue">
            <summary>
              The name of the procedure that sets enumeration table column default value.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.SetEnumValueChecking">
            <summary>
              The name of the procedure that enables or disables value checking constraint.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.AddDecimalColumn">
            <summary>
              The name of the procedure that creates a decimal table column.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.SetDecimalMinimum">
            <summary>
              The name of the procedure that sets decimal table column minimum value.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.SetDecimalMaximum">
            <summary>
              The name of the procedure that sets decimal table column maximum value.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.SetDecimalPrecision">
            <summary>
              The name of the procedure that sets decimal table column precision.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.SetDecimalScale">
            <summary>
              The name of the procedure that sets decimal table column scale.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.SetDecimalDefaultValue">
            <summary>
              The name of the procedure that sets decimal table column default value.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.AddDateTimeColumn">
            <summary>
              The name of the procedure that creates a datetime table column.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.SetDateTimeMaximum">
            <summary>
              The name of the procedure that sets datetime table column maximum value.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.SetDateTimeMinimum">
            <summary>
              The name of the procedure that sets datetime table column minimum value.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.SetDateTimeDefault">
            <summary>
              The name of the procedure that sets datetime table column default value.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.AddBoolColumn">
            <summary>
              The name of the procedure that creates a boolean table column.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.SetBoolDefault">
            <summary>
              The name of the procedure that sets boolean table column default value.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.AddBinaryColumn">
            <summary>
              The name of the procedure that creates a binary table column.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.AddIntColumn">
            <summary>
              The name of the procedure that creates an integer table column.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.SetIntDefault">
            <summary>
              The name of the procedure that sets integer table column default value.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.SetIntMaximum">
            <summary>
              The name of the procedure that sets integer table column maximum value.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.SetIntMinimum">
            <summary>
              The name of the procedure that sets integer table column minimum value.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.AddBigIntColumn">
            <summary>
              The name of the procedure that creates a big integer table column.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.SetBigIntDefault">
            <summary>
              The name of the procedure that sets big integer table column default value.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.SetBigIntMaximum">
            <summary>
              The name of the procedure that sets big integer table column maximum value.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.SetBigIntMinimum">
            <summary>
              The name of the procedure that sets big integer table column minimum value.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.AddSmallIntColumn">
            <summary>
              The name of the procedure that creates a small integer table column.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.SetSmallIntDefault">
            <summary>
              The name of the procedure that sets small integer table column default value.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.SetSmallIntMaximum">
            <summary>
              The name of the procedure that sets small integer table column maximum value.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.SetSmallIntMinimum">
            <summary>
              The name of the procedure that sets small integer table column minimum value.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.AddGuidColumn">
            <summary>
              The name of the procedure that creates a new guid table column.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.SetGuidDefault">
            <summary>
              The name of the procedure that sets guid table column default value.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.AddTimeSpanColumn">
            <summary>
              The name of the procedure that creates a timespan table column.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.SetTimeSpanDefault">
            <summary>
              The name of the procedure that sets timespan table column default value.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.AddTextColumn">
            <summary>
              The name of the procedure that creates a text table column.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.AddIndex">
            <summary>
              The name of the procedure that creates a table index.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.DeleteIndex">
            <summary>
              The name of the procedure that deletes a table index.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.AddUnit">
            <summary>
              The name of the procedure that creates a business unit.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.DeleteUnit">
            <summary>
              The name of the procedure that deletes a business unit.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.AddUnitParent">
            <summary>
              The name of the procedure that adds a parent business unit.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.DeleteUnitParent">
            <summary>
              The name of the procedure that deletes a parent business unit.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.AddRole">
            <summary>
              The name of the procedure that creates a new security role.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.DeleteRole">
            <summary>
              The name of the procedure that deletes a security role.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.GetCurrentUser">
            <summary>
              The name of the procedure that returns the current user.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.AddUser">
            <summary>
              The name of the procedure that creates a new user.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.DeleteUser">
            <summary>
              The name of the procedure that deletes a user.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.SetUserCanLogon">
            <summary>
              The name of the procedure that sets user logon ability.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.SetUserCanChangeSchema">
            <summary>
              The name of the procedure that sets user ability to change the schema.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.SetUserCanChangeSecurity">
            <summary>
              The name of the procedure that sets user ability to change security settings.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.AddUserUnit">
            <summary>
              The name of the procedure that adds a user in a business unit.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.DeleteUserUnit">
            <summary>
              The name of the procedure that deletes a user from from a business unit.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.AddUserInRole">
            <summary>
              The name of the procedure that adds a user in a security role.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.DeleteUserFromRole">
            <summary>
              The name of the procedure that deletes a user from a security role.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.AddRoleInRole">
            <summary>
              The name of the procedure that adds one security role into another.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.DeleteRoleFromRole">
            <summary>
              The name of the procedure that deletes one security role from another.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.GrantTablePermission">
            <summary>
              The name of the procedure that grants a table access permission.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.RevokeTablePermission">
            <summary>
              The name of the procedure that revokes a table access permission.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.ChangeUserPassword">
            <summary>
              The name of the procedure that changes user password.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.ChangeCurrentUserPassword">
            <summary>
              The name of the procedure that changes the current user password.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.AppendBinaryData">
            <summary>
              The name of the procedure that appends data to a binary table column.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.AppendTextData">
            <summary>
              The name of the procedure that appends data to a text table column.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.SoftDeleteTableRow">
            <summary>
              The name of the procedure that soft deletes a table row.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.DeleteTableRow">
            <summary>
              The name of the procedure that delete a table row.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.RestoreTableRow">
            <summary>
              The name of the procedure that restores a table row.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.SetTableUnitLevelSecurity">
            <summary>
              The name of the procedure that enables/disables table unit level security.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Procedures.SetRecycleBin">
            <summary>
              The name of the procedure that enables/disables the recycle bin.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables">
            <summary>
              Database table constants.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.Prefix">
            <summary>
              The prefix used for internal table name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.BigIntegerColumnList">
            <summary>
              Big integer column table constants.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.BigIntegerColumnList.Name">
            <summary>
              The big integer column table name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.BigIntegerColumnList.Col">
            <summary>
              Big integer column table specific column names.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.BigIntegerColumnList.Col.DefaultValue">
            <summary>
              The default value column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.BigIntegerColumnList.Col.Maximum">
            <summary>
              The maximum value column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.BigIntegerColumnList.Col.Minimum">
            <summary>
              The minimum value column name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.BinaryColumnList">
            <summary>
              Binary column table constants.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.BinaryColumnList.Name">
            <summary>
              The binary column table name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.BooleanColumnList">
            <summary>
              Boolean column table constants.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.BooleanColumnList.Name">
            <summary>
              The boolean column table name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.BooleanColumnList.Col">
            <summary>
              Boolean column table specific column names.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.BooleanColumnList.Col.DefaultValue">
            <summary>
              The default value column name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.ColumnList">
            <summary>
              Column list table constants.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.ColumnList.Col">
            <summary>
              Column list column names.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.ColumnList.Col.ColumnId">
            <summary>
              The column id column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.ColumnList.Col.TableId">
            <summary>
              The table id column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.ColumnList.Col.ColumnName">
            <summary>
              The column name column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.ColumnList.Col.DisplayName">
            <summary>
              The column display name column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.ColumnList.Col.Description">
            <summary>
              The column decription column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.ColumnList.Col.OrderIndex">
            <summary>
              The column order index column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.ColumnList.Col.IsNotNull">
            <summary>
              The column nullability column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.ColumnList.Col.CustomizationLevel">
            <summary>
              The column customization level column name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.DateTimeColumnList">
            <summary>
              DateTime column table constants.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.DateTimeColumnList.Name">
            <summary>
              The DateTime column table name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.DateTimeColumnList.Col">
            <summary>
              DateTime column table specific column names.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.DateTimeColumnList.Col.DefaultValue">
            <summary>
              The default value column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.DateTimeColumnList.Col.Maximum">
            <summary>
              The maximum value column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.DateTimeColumnList.Col.Minimum">
            <summary>
              The minimum value column name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.DbmsFeatureList">
            <summary>
              Database feature table constants.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.DbmsFeatureList.Name">
            <summary>
              The database feature list table name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.DbmsFeatureList.Col">
            <summary>
              The database feature list table columns.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.DbmsFeatureList.Col.FeatureName">
            <summary>
              The feature name column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.DbmsFeatureList.Col.IsEnabled">
            <summary>
              The availability column name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.DbmsFeatureList.FeatureNames">
            <summary>
              Feature names.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.DbmsFeatureList.FeatureNames.ColumnRenaming">
            <summary>
              The column renaming feature name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.DbmsFeatureList.FeatureNames.RegularExpressions">
            <summary>
              The regular expressions feature name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.DbmsFeatureList.FeatureNames.GrantSelectOnColumns">
            <summary>
              The granting select on columns feature name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.DecimalColumnList">
            <summary>
              Decimal column table constants.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.DecimalColumnList.Name">
            <summary>
              The decimal column table name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.DecimalColumnList.Col">
            <summary>
              Decimal column table specific column names.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.DecimalColumnList.Col.DefaultValue">
            <summary>
              The default value column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.DecimalColumnList.Col.Maximum">
            <summary>
              The maximum value column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.DecimalColumnList.Col.Minimum">
            <summary>
              The minimum value column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.DecimalColumnList.Col.Precision">
            <summary>
              The precision column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.DecimalColumnList.Col.Scale">
            <summary>
              The scale column name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.EnumerationColumnList">
            <summary>
              Enumeration column table constants.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.EnumerationColumnList.Name">
            <summary>
              The enumeration column table name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.EnumerationColumnList.Col">
            <summary>
              Enumartion column table specific column names
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.EnumerationColumnList.Col.DefaultValue">
            <summary>
              The default value column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.EnumerationColumnList.Col.ValueChecking">
            <summary>
              The availability of the enum value checking column name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.EnumerationMemberList">
            <summary>
              Enumeration member table constants.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.EnumerationMemberList.Name">
            <summary>
              The enumeration member table name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.EnumerationMemberList.Col">
            <summary>
              Enumeration member table specific column names.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.EnumerationMemberList.Col.ColumnId">
            <summary>
              The column id column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.EnumerationMemberList.Col.Value">
            <summary>
              The member value column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.EnumerationMemberList.Col.DisplayName">
            <summary>
              The member display name column name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.GuidColumnList">
            <summary>
              Guid column table constants.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.GuidColumnList.Name">
            <summary>
              The guid column table name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.GuidColumnList.Col">
            <summary>
              Guid column table specific column names.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.GuidColumnList.Col.DefaultValue">
            <summary>
              The default value column name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.IndexList">
            <summary>
              Index table constants
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.IndexList.Name">
            <summary>
              The index table name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.IndexList.Col">
            <summary>
              Index table column names.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.IndexList.Col.IndexId">
            <summary>
              The index id column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.IndexList.Col.TableId">
            <summary>
              The table id column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.IndexList.Col.ColumnIdList">
            <summary>
              The column id list column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.IndexList.Col.IsUnique">
            <summary>
              The column uniqueness column name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.IntegerColumnList">
            <summary>
              Integer column table constants.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.IntegerColumnList.Name">
            <summary>
              The integer column table name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.IntegerColumnList.Col">
            <summary>
              Integer column table column names.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.IntegerColumnList.Col.DefaultValue">
            <summary>
              The default value column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.IntegerColumnList.Col.Maximum">
            <summary>
              The maximum value column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.IntegerColumnList.Col.Minimum">
            <summary>
              The minimum value column name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.ReferenceColumnList">
            <summary>
              Reference column table constants.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.ReferenceColumnList.Name">
            <summary>
              The reference column table name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.ReferenceColumnList.Col">
            <summary>
              Reference column table specific column names.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.ReferenceColumnList.Col.DefaultValue">
            <summary>
              The default value column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.ReferenceColumnList.Col.ReferenceChecking">
            <summary>
              The status of the reference checking trigger.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.ReferenceTargetList">
            <summary>
              Reference target table constants
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.ReferenceTargetList.Name">
            <summary>
              The reference target table name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.ReferenceTargetList.Col">
            <summary>
              Reference target table specific column names.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.ReferenceTargetList.Col.ColumnId">
            <summary>
              The column id column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.ReferenceTargetList.Col.ReferencedTableId">
            <summary>
              The referenced table id column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.ReferenceTargetList.Col.CascadeDelete">
            <summary>
              The cascade delete column name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.RoleList">
            <summary>
              Role table constants.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.RoleList.Name">
            <summary>
              The role table name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.RoleList.Col">
            <summary>
              Role table column names.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.RoleList.Col.RoleName">
            <summary>
              The role name column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.RoleList.Col.DisplayName">
            <summary>
              The display name column name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.RoleRolesList">
            <summary>
              Role roles table constants.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.RoleRolesList.Name">
            <summary>
              The role roles table name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.RoleRolesList.Col">
            <summary>
              Role roles table column names.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.RoleRolesList.Col.RoleName">
            <summary>
              The role name column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.RoleRolesList.Col.ContainerRoleName">
            <summary>
              The container role name column name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.SmallIntegerColumnList">
            <summary>
              Small integer column table constants.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.SmallIntegerColumnList.Name">
            <summary>
              The small integer column table name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.SmallIntegerColumnList.Col">
            <summary>
              Small integer column table specific column names.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.SmallIntegerColumnList.Col.DefaultValue">
            <summary>
              The default value column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.SmallIntegerColumnList.Col.Maximum">
            <summary>
              The maximum value column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.SmallIntegerColumnList.Col.Minimum">
            <summary>
              The minimum value column name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.StringColumnList">
            <summary>
              String column table constants.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.StringColumnList.Name">
            <summary>
              The string column table name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.StringColumnList.Col">
            <summary>
              String column table specific column names.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.StringColumnList.Col.DefaultValue">
            <summary>
              The default value column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.StringColumnList.Col.MaxLength">
            <summary>
              The maximum string length column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.StringColumnList.Col.IsNotEmpty">
            <summary>
              The column emptiness column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.StringColumnList.Col.RegularExpression">
            <summary>
              The regular expression column name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.TableAcl">
            <summary>
              Table access control table constants.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.TableAcl.Name">
            <summary>
              The table access control table name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.TableAcl.Col">
            <summary>
              Table access control table column names.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.TableAcl.Col.TableId">
            <summary>
              The table id column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.TableAcl.Col.PrincipalName">
            <summary>
              The principal name column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.TableAcl.Col.DataAction">
            <summary>
              The access type column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.TableAcl.Col.AccessLevel">
            <summary>
              The access level column name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.TableAclFullAccess">
            <summary>
              Acl full access table constants.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.TableAclFullAccess.Name">
            <summary>
              The acl full access table name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.TableAclFullAccess.Col">
            <summary>
              Acl full access table column names.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.TableAclFullAccess.Col.TableId">
            <summary>
              The table id column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.TableAclFullAccess.Col.UserName">
            <summary>
              The user name column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.TableAclFullAccess.Col.DataAction">
            <summary>
              The access type column name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.TableAclMatrix">
            <summary>
              Acl matrix table constants.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.TableAclMatrix.Name">
            <summary>
              The acl matrix table name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.TableAclMatrix.Col">
            <summary>
              Acl matrix table column names.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.TableAclMatrix.Col.TableId">
            <summary>
              The table id column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.TableAclMatrix.Col.UserName">
            <summary>
              The user name column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.TableAclMatrix.Col.Owner">
            <summary>
              The owner column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.TableAclMatrix.Col.DataAction">
            <summary>
              The access type column name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.TableList">
            <summary>
              Table list table constants.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.TableList.Name">
            <summary>
              The table list table name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.TableList.Col">
            <summary>
              Table list column names.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.TableList.Col.TableId">
            <summary>
              The table id column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.TableList.Col.TableName">
            <summary>
              The table name column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.TableList.Col.DisplayName">
            <summary>
              The table display name column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.TableList.Col.Description">
            <summary>
              The table description column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.TableList.Col.UnitLevelSecurity">
            <summary>
              Unit level security availability column name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.TextColumnList">
            <summary>
              Text column table constants.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.TextColumnList.Name">
            <summary>
              The text column table name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.TimeSpanColumnList">
            <summary>
              TimeSpan column table constants.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.TimeSpanColumnList.Name">
            <summary>
              The TimeSpan column table name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.TimeSpanColumnList.Col">
            <summary>
              TimeSpan column table specific column names.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.TimeSpanColumnList.Col.DefaultValue">
            <summary>
              The default value column name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.UnitList">
            <summary>
              Business unit table constants.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.UnitList.Name">
            <summary>
              The business unit table name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.UnitList.Col">
            <summary>
              Business unit table columns.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.UnitList.Col.UnitId">
            <summary>
              The unit id column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.UnitList.Col.Name">
            <summary>
              The unit name column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.UnitList.Col.DisplayName">
            <summary>
              The display name column name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.UnitParentList">
            <summary>
              Business unit parents table.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.UnitParentList.Name">
            <summary>
              The Business unit parents table name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.UnitParentList.Col">
            <summary>
              Business unit parents table columns.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.UnitParentList.Col.UnitId">
            <summary>
              The unit id column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.UnitParentList.Col.ParentUnitId">
            <summary>
              The parent unit id column name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.UserList">
            <summary>
              User table constants.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.UserList.Name">
            <summary>
              The user table name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.UserList.Col">
            <summary>
              User table column names.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.UserList.Col.UserName">
            <summary>
              The user name column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.UserList.Col.DisplayName">
            <summary>
              The display name column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.UserList.Col.CanLogon">
            <summary>
              The logon ability column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.UserList.Col.CanChangeSecurity">
            <summary>
              The permission to change security settings column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.UserList.Col.CanChangeSchema">
            <summary>
              The permission to change the schema column name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.UserRolesList">
            <summary>
              User roles table constants.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.UserRolesList.Name">
            <summary>
              The user roles table name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.UserRolesList.Col">
            <summary>
              User roles table columns.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.UserRolesList.Col.UserName">
            <summary>
              The user name column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.UserRolesList.Col.ContainerRoleName">
            <summary>
              The container role name column name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.UserTable">
            <summary>
              User-defined table constants.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.UserTable.Col">
            <summary>
              User-defined table column constants.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.UserTable.Col.Id">
            <summary>
              The unique identifier column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.UserTable.Col.Owner">
            <summary>
              The row owner column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.UserTable.Col.IsActive">
            <summary>
              The row status column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.UserTable.Col.CreatedBy">
            <summary>
              The row creator column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.UserTable.Col.CreatedOn">
            <summary>
              The row creation datetime column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.UserTable.Col.UpdatedBy">
            <summary>
              The row updator column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.UserTable.Col.UpdatedOn">
            <summary>
              The row last modification datetime column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.UserTable.Col.DeletedBy">
            <summary>
              The row deletor column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.UserTable.Col.DeletedOn">
            <summary>
              The row deletion datetime column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.UserTable.Col.RowVersion">
            <summary>
              The row version column name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.UserUnitList">
            <summary>
              User units table constants.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.UserUnitList.Name">
            <summary>
              The user units table name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.UserUnitList.Col">
            <summary>
              User units table column names.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.UserUnitList.Col.UserName">
            <summary>
              The user name column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.UserUnitList.Col.UnitId">
            <summary>
              The unit id column name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.OptionList">
            <summary>
              Options table constants.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.OptionList.Name">
            <summary>
              The options table name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.OptionList.Col">
            <summary>
              Options table column names.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.OptionList.Col.OptionName">
            <summary>
              The option name column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.OptionList.Col.IntegerValue">
            <summary>
              The integer value column name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Tables.OptionList.OptionNames">
            <summary>
              Option names constants.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Tables.OptionList.OptionNames.RecycleBin">
            <summary>
              The name of the option that enables/disables the recycle bin.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Views">
            <summary>
              Database view constants.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Views.ColumnList">
            <summary>
              Table column view constants.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Views.ColumnList.Name">
            <summary>
              The table column view name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Views.ColumnList.Col">
            <summary>
              Table column view column names.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Views.ColumnList.Col.TableId">
            <summary>
              The table id column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Views.ColumnList.Col.TableName">
            <summary>
              The table name column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Views.ColumnList.Col.ColumnId">
            <summary>
              The column id column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Views.ColumnList.Col.ColumnName">
            <summary>
              The column name column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Views.ColumnList.Col.ColumnDisplayName">
            <summary>
              The column display name column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Views.ColumnList.Col.ColumnDescription">
            <summary>
              The column description column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Views.ColumnList.Col.ColumnIsNotNull">
            <summary>
              The column nullability column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Views.ColumnList.Col.ColumnOrderIndex">
            <summary>
              The column order index column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Views.ColumnList.Col.ColumnCustomizationLevel">
            <summary>
              The column customization level column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Views.ColumnList.Col.ColumnType">
            <summary>
              The column type column name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Views.CurrentUser">
            <summary>
              Current user view constants.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Views.CurrentUser.Name">
            <summary>
              The current user view name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Views.CurrentUser.Col">
            <summary>
              Current user view column names.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Views.CurrentUser.Col.UserName">
            <summary>
              The user name column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Views.CurrentUser.Col.DisplayName">
            <summary>
              The display name column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Views.CurrentUser.Col.CanLogon">
            <summary>
              The logon ability column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Views.CurrentUser.Col.CanChangeSecurity">
            <summary>
              The permission to change security settings column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Views.CurrentUser.Col.CanChangeSchema">
            <summary>
              The permission to change the schema column name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Views.PrincipalList">
            <summary>
              Principal view constants.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Views.PrincipalList.Name">
            <summary>
              The principal view name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Views.PrincipalList.Col">
            <summary>
              Principal view column names.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Views.PrincipalList.Col.PrincipalName">
            <summary>
              The principal name column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Views.PrincipalList.Col.DisplayName">
            <summary>
              The display name column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Views.PrincipalList.Col.PrincipalType">
            <summary>
              The principal type column name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Views.PrincipalList.PrincipalTypes">
            <summary>
              Principal types names.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Views.PrincipalList.PrincipalTypes.Role">
            <summary>
              The role principal type name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Views.PrincipalList.PrincipalTypes.User">
            <summary>
              The user principal type name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Views.UserNameList">
            <summary>
              User name view constants.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Views.UserNameList.Name">
            <summary>
              The user name view name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Views.UserNameList.Col">
            <summary>
              User name view column names.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Views.UserNameList.Col.UserName">
            <summary>
              The user name column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Views.UserNameList.Col.DisplayName">
            <summary>
              The display name column name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Views.UserTableAclFullAccess">
            <summary>
              Current user acl full access view constants.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Views.UserTableAclFullAccess.Name">
            <summary>
              The current user acl full access view name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Views.UserTableAclFullAccess.Col">
            <summary>
              Current user acl full access column names.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Views.UserTableAclFullAccess.Col.TableId">
            <summary>
              The table id column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Views.UserTableAclFullAccess.Col.DataAction">
            <summary>
              The access type column name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Views.UserTableAclMatrix">
            <summary>
              Current user acl matrix view constants.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Views.UserTableAclMatrix.Name">
            <summary>
              The current user acl matrix view name.
            </summary>
        </member>
        <member name="T:Centido.Core.Db.Views.UserTableAclMatrix.Col">
            <summary>
              Current user acl matrix column names.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Views.UserTableAclMatrix.Col.TableId">
            <summary>
              The table id column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Views.UserTableAclMatrix.Col.Owner">
            <summary>
              The owner column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Db.Views.UserTableAclMatrix.Col.DataAction">
            <summary>
              The access type column name.
            </summary>
        </member>
        <member name="T:Centido.Core.Index">
            <summary>
              A table index defined on a user table.
            </summary>
            <remarks>Table indexes are used to optimize the exucution
            of some common queries to the table. By default a user-defined table
            has two default indexes. The first one guarantees the uniqueness of the
            primary key column. The second one helps to read active rows.</remarks>
            <example>
              The following example shows how to add indexes for a user-defined table.
            <code>
                using System;
                using System.Data.Common;
                using Centido.Core;
            
                class DomainBuildSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
            
                        //Creating a table that will store a student list
                        var studentTable = domain.AddTable("students");
            
                        //Creating a column that will store a student surname
                        var surnameColumn = studentTable.AddColumn("surname", ColumnType.String)
                            as StringColumn;
                        surnameColumn.IsNotEmpty = true;
            
                        //Creating an index that will guarantee the uniqueness of the student surname
                        studentTable.AddIndex(true, surnameColumn);
            
                        //Inserting a student
                        studentTable.GrantAll();
            
                        studentTable.InsertRow(surnameColumn.Value("Smith"));
            
                        //Trying to add a student with the same surname
                        try
                        {
                            studentTable.InsertRow(surnameColumn.Value("Smith"));
                        }
                        catch(DbException)
                        {
                            Console.WriteLine("Cannot add a student with the duplicate surname");
                        }
                    }
                }
            </code>
            </example>
        </member>
        <member name="F:Centido.Core.Index.IndexedColumnMaxCount">
            <summary>
              The maximum number of column in an index.
            </summary>
            <remarks>
              The actual value of the maximum number of column in an index constant
              is set because of Sql Server limitations.
            </remarks>
        </member>
        <member name="F:Centido.Core.Index._table">
            <summary>
              The parent table
            </summary>
        </member>
        <member name="F:Centido.Core.Index._isUnique">
            <summary>
              The uniqueness of the index.
            </summary>
        </member>
        <member name="M:Centido.Core.Index.#ctor(System.Guid,Centido.Core.Table)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.Index"/> class
              for the specified index id and parent table.
            </summary>
            <param name="indexId">The specified index id.</param>
            <param name="table">The specified parent table.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Index.Exists">
            <summary>
              Checks the existence of the index.
            </summary>
            <returns>Returns true if the index still exists; otherwise, returns false.</returns>
        </member>
        <member name="M:Centido.Core.Index.Delete">
            <summary>
              Delete table index.
              Current user has to have CanChangeSchema=true in order to execute this function
            </summary>
        </member>
        <member name="M:Centido.Core.Index.GetRawId">
            <summary>
              Gets the id of the index in the binary format.
            </summary>
            <returns>Returns the id of the index in the binary format.</returns>
        </member>
        <member name="M:Centido.Core.Index.ReadProperty(System.String)">
            <summary>
              Reads the index property.
            </summary>
            <param name = "propertyName">The property name.</param>
            <returns>Returns the property value.</returns>
        </member>
        <member name="M:Centido.Core.Index.Refresh">
            <summary>
              Refreshes the properties of the index.
            </summary>
        </member>
        <member name="P:Centido.Core.Index.Table">
            <summary>
              Gets the parent table.
            </summary>
        </member>
        <member name="P:Centido.Core.Index.Domain">
            <summary>
              Gets the parent domain.
            </summary>
        </member>
        <member name="P:Centido.Core.Index.Columns">
            <summary>
              Gets an indexed column list.
            </summary>
        </member>
        <member name="P:Centido.Core.Index.IsUnique">
            <summary>
              True if the index is unique; otherwise, false.
            </summary>
        </member>
        <member name="P:Centido.Core.Index.Id">
            <summary>
              Gets the id of the index.
            </summary>
        </member>
        <member name="T:Centido.Core.Dto.UserDto">
            <summary>
              A data transfering object for a registered user.
            </summary>
        </member>
        <member name="M:Centido.Core.Dto.UserDto.GetSchema">
            <summary>
              This method is reserved and should not be used. When implementing the IXmlSerializable interface, you should return null (Nothing in Visual Basic) from this method, and instead, if specifying a custom schema is required, apply the <see cref="T:System.Xml.Serialization.XmlSchemaProviderAttribute"/> to the class.
            </summary>
            <returns>
              An <see cref="T:System.Xml.Schema.XmlSchema"/> that describes the XML representation of the object that is produced by the <see cref="M:System.Xml.Serialization.IXmlSerializable.WriteXml(System.Xml.XmlWriter)"/> method and consumed by the <see cref="M:System.Xml.Serialization.IXmlSerializable.ReadXml(System.Xml.XmlReader)"/> method.
            </returns>
        </member>
        <member name="M:Centido.Core.Dto.UserDto.ReadXml(System.Xml.XmlReader)">
            <summary>
              Generates an object from its XML representation.
            </summary>
            <param name="reader">The <see cref="T:System.Xml.XmlReader"/> stream from which the object is deserialized. 
            </param>
        </member>
        <member name="M:Centido.Core.Dto.UserDto.WriteXml(System.Xml.XmlWriter)">
            <summary>
              Converts an object into its XML representation.
            </summary>
            <param name="writer">The <see cref="T:System.Xml.XmlWriter"/> stream to which the object is serialized. 
            </param>
        </member>
        <member name="T:Centido.Core.Dto.SmallIntColumnDto">
            <summary>
              A data transfering object for a small integer table column.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.SmallIntColumnDto.XmlTag">
            <summary>
              The name of the xml tag that is used to store this object.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.SmallIntColumnDto.CurrentXmlSchemaVersion">
            <summary>
              The current xml schema version.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.SmallIntColumnDto.DefaultValueTag">
            <summary>
              The name of the xml tag that is used to store the column default value.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.SmallIntColumnDto.MaximumTag">
            <summary>
              The name of the xml tag that is used to store the column maximum value.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.SmallIntColumnDto.MinimumTag">
            <summary>
              The name of the xml tag that is used to store the column minimum value.
            </summary>
        </member>
        <member name="M:Centido.Core.Dto.SmallIntColumnDto.GetSchema">
            <summary>
              This method is reserved and should not be used. When implementing the IXmlSerializable interface, you should return null (Nothing in Visual Basic) from this method, and instead, if specifying a custom schema is required, apply the <see cref="T:System.Xml.Serialization.XmlSchemaProviderAttribute"/> to the class.
            </summary>
            <returns>
            An <see cref="T:System.Xml.Schema.XmlSchema"/> that describes the XML representation of the object that is produced by the <see cref="M:System.Xml.Serialization.IXmlSerializable.WriteXml(System.Xml.XmlWriter)"/> method and consumed by the <see cref="M:System.Xml.Serialization.IXmlSerializable.ReadXml(System.Xml.XmlReader)"/> method.
            </returns>
        </member>
        <member name="M:Centido.Core.Dto.SmallIntColumnDto.ReadXml(System.Xml.XmlReader)">
            <summary>
              Generates an object from its XML representation.
            </summary>
            <param name="reader">The <see cref="T:System.Xml.XmlReader"/> stream from which the object is deserialized. 
            </param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="reader"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.SmallIntColumnDto.WriteXml(System.Xml.XmlWriter)">
            <summary>
              Converts an object into its XML representation.
            </summary>
            <param name="writer">The <see cref="T:System.Xml.XmlWriter"/> stream to which the object is serialized. 
            </param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="writer"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.SmallIntColumnDto.CopyTo(Centido.Core.SmallIntColumn)">
            <summary>
              Copies the properties of the data transfer object to the
            specified small integer column.
            </summary>
            <param name="smallIntColumn">The small integer column.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="smallIntColumn"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.SmallIntColumnDto.CreateFrom(Centido.Core.SmallIntColumn)">
            <summary>
              Creates a data transfer object for the specified small integer column.
            </summary>
            <param name="smallIntColumn">The specified small integer column.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="smallIntColumn"/> is null.</exception>
            <returns>Returns the data transfer object for the specified small integer column.</returns>
        </member>
        <member name="P:Centido.Core.Dto.SmallIntColumnDto.DefaultValue">
            <summary>
              Gets or sets the column default value.
            </summary>
        </member>
        <member name="P:Centido.Core.Dto.SmallIntColumnDto.Maximum">
            <summary>
              Gets or sets the column maximum value.
            </summary>
        </member>
        <member name="P:Centido.Core.Dto.SmallIntColumnDto.Minimum">
            <summary>
              Gets or sets the column minimum value.
            </summary>
        </member>
        <member name="T:Centido.Core.Table">
             <summary>
               A user-defined database table.
             </summary>
             <remarks>
             <para>
               This class provides a set of methods for defining the structure of a user-defined table,
               creating table indexes, configuring security permissions and manipulating the data inside the table.
               Executing some of the methods requires having the appropriate security permissions.
             </para>
             </remarks>
             <example>
               The following example shows how to create a user-defined table
               and define its structure.
             <code>
                 using System;
                 using Centido.Core;
             
                 class Sample
                 {
                     static void Main()
                     {
                         var domainConfig = new DomainConfiguration()
                         {
                             DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                             DbProviderName = "System.Data.SqlClient"
                         };
                     
                         var domain = Domain.Build(domainConfig);
                     
                         domain.DeleteAll();
                         
                         //Adding a new table
                         var table = domain.AddTable("students");
                         
                         //Adding some table columns
                         var nameColumn = table.AddColumn("name", ColumnType.String) as StringColumn;
                         nameColumn.IsNotNull = true;
                         nameColumn.IsNotEmpty = true;
                         nameColumn.MaxLength = 64;
             
                         var birthdayColumn = table.AddColumn("birthday", ColumnType.DateTime) as DateTimeColumn;
                         birthdayColumn.IsNotNull = true;
                     }
                 }
             </code>
               The following example shows how to populate the table built previously with some data.
             <code>
                 using System;
                 using Centido.Core;
             
                 class Sample
                 {
                     static void Main()
                     {
                         var domainConfig = new DomainConfiguration()
                         {
                             DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                             DbProviderName = "System.Data.SqlClient"
                         };
                     
                         var domain = Domain.Build(domainConfig);
                         
                         var table = domain.GetTable("students");
             
                         if (table != null)
                         {
                             //Granting all necessary permissions
                             if (!domain.CurrentUser.CanDo(table, DataAction.Insert))
                                 table.Grant(DataAction.Insert);
            
                             if (!domain.CurrentUser.CanDo(table, DataAction.Select))
                                 table.Grant(DataAction.Select);
                         
                             //Inserting a student
                             var id = table.InsertRow(table.GetColumn("name").Value("John Smith"),
                                 table.GetColumn("birthday").Value(DateTime.Now.AddYears(-25)));
             
                             //Reading inserted values
                             var insertedName = table.GetColumn("name").EmptyValue();
                             var insertedBirthday = table.GetColumn("birthday").EmptyValue();
             
                             table.ReadRow(id, insertedName, insertedBirthday);
             
                             Console.WriteLine("Student name = {0}, birthay = {1}",
                                 DbValue.GetString(insertedName),
                                 DbValue.GetDateTime(insertedBirthday));
                         }
                    }
                 }
             </code>
             </example>
        </member>
        <member name="F:Centido.Core.Table._domain">
            <summary>
              Parent domain.
            </summary>
        </member>
        <member name="F:Centido.Core.Table._systemColumns">
            <summary>
              System columns collection.
            </summary>
        </member>
        <member name="F:Centido.Core.Table._name">
            <summary>
              The table name.
            </summary>
        </member>
        <member name="F:Centido.Core.Table._displayName">
            <summary>
              The table display name.
            </summary>
        </member>
        <member name="F:Centido.Core.Table._description">
            <summary>
              The table description;
            </summary>
        </member>
        <member name="M:Centido.Core.Table.#ctor(System.Guid,Centido.Core.Domain)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.Table"/> class
              for the specified table id and parent domain.
            </summary>
            <param name="tableId">The specified table id.</param>
            <param name="domain">The parent domain.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="domain"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Table.#ctor(System.Guid,Centido.Core.Domain,System.String,System.String,System.String)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.Table"/> class
            for the specified table id, name, display name, display collection name,
            description and parent domain..
            </summary>
            <param name="tableId">The table id.</param>
            <param name="domain">The parent domain.</param>
            <param name="name">The table name.</param>
            <param name="displayName">The table display name.</param>
            <param name="description">The table description.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="domain"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="name"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="name"/> is an empty string.</exception>
        </member>
        <member name="M:Centido.Core.Table.Exists">
            <summary>
              Checks the existence of the table.
            </summary>
            <returns>Returns true if the table still exists; otherwise, returns false.</returns>
        </member>
        <member name="M:Centido.Core.Table.Delete">
            <summary>
              Deletes the current table.   
            </summary>
            <remarks>
              The current user has to have the permission to change the schema in order to execute this function.
            </remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there are references on the current table.</exception>
            <example>
              The following example shows how to delete a user-defined table.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
            
                        //Creating a new table
                        domain.AddTable("my_table");
            
                        //Enumerating all tables in the domain
                        Console.WriteLine("Table list:"); 
                        
                        foreach(var table in domain.Tables)
                            Console.WriteLine("\tTable = {0}", table.Name);
            
                        //Deleting the table
                        domain.GetTable("my_table").Delete();
            
                        Console.WriteLine("Deleting the table");
            
                        //Enumerating all tables in the domain
                        Console.WriteLine("Table list:"); 
                        
                        foreach(var table in domain.Tables)
                            Console.WriteLine("\tTable = {0}", table.Name);
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Table.GetRawId">
            <summary>
              Gets a byte array representation of the table id.
            </summary>
            <remarks>All table ids are stored as byte arrays.</remarks>
            <returns>Returns a byte array representation of the table id.</returns>
            <example>
              The following example shows how to set the table display name in the metadata directly.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        Console.WriteLine("Setting the table display name directly");
            
                        var displayName = "My table";
            
                        domain.DbAccess.ExecuteNonQuery(cmd =>
                        {
                            cmd.CommandText = string.Format("update {0} set {1}={2} where {3}={4}",
                                domain.GetObjectFullName(Db.Tables.TableList.Name),
                                Db.Tables.TableList.Col.DisplayName,
                                domain.DbAccess.FormatMarker("display_name"),
                                Db.Tables.TableList.Col.TableId,
                                domain.DbAccess.FormatMarker("id"));
            
                            cmd.Parameters.Add(domain.DbAccess.CreateParameter("display_name", OdbcType.NVarChar, displayName));
                            cmd.Parameters.Add(domain.DbAccess.CreateParameter("id", OdbcType.Binary, table.GetRawId()));
                        });
            
                        Console.WriteLine("Table display name = {0}", table.DisplayName);
                    }
                }   
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Table.GetColumn(System.Guid)">
            <summary>
              Retrieves the table column with the specified column id.
            </summary>
            <remarks>The reference to the newly created table column returned by the method
            needs to be converted to a specific column type.</remarks>
            <param name = "columnId">The id of the requested table column.</param>
            <returns>Returns a table column with the specified column id if there is one; otherwise, returns null.</returns>
            <example>
              The following example shows how to retrieve a table column by column id.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a table column
                        var column = table.AddColumn("my_column", ColumnType.Integer);
            
                        //Retrieving the column by id
                        Console.WriteLine("Column name = {0}", table.GetColumn(column.Id).Name);
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Table.GetColumn(System.String)">
            <summary>
              Retrieves the table column with the specified column name.
            </summary>
            <remarks>
            Table column name is always trimmed and lowered.
            The reference to the newly created table column returned by the method
            needs to be converted to a specific column type.</remarks>
            <param name="columnName">The name of the requested column.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <returns>Returns a table column with the specified column name if there is one; otherwise, returns null.</returns>
            <example>
              The following example shows how to retrieve a table column by column name.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a table column
                        var column = table.AddColumn("my_column", ColumnType.Integer);
            
                        //Retrieving the column by id
                        Console.WriteLine("Column id = {0}", table.GetColumn("My_ColumN").Id);
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Table.AddColumn(System.Guid,System.String,Centido.Core.ColumnType)">
            <summary>
              Creates a new table column with the specified column id, name and type.   
            </summary>
            <remarks>
            <para>The reference to the newly created table column returned by the method
            needs to be converted to a specific column type.</para>
            <para>The current user has to have the permission to change the schema in order to execute this function.</para>
            </remarks>
            <param name="columnId">The column id.</param>
            <param name="columnName">The column name.</param>
            <param name="columnType">The column type.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is a column with the same id or the same name in the same user-defined table.</exception>
            <returns>Returns the newly created table column.</returns>
            <example>
              The following example shows how to create a table column and set its properties.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("students");
            
                        //Creating a table column
                        var column = table.AddColumn(Guid.NewGuid(), "surname", ColumnType.String)
                            as StringColumn;
            
                        //Setting the column properties
                        column.DisplayName = "Student surname";
                        column.IsNotNull = true;
                        column.IsNotEmpty = true;
                        column.MaxLength = 64;
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Table.AddColumn(System.String,Centido.Core.ColumnType)">
            <summary>
              Creates a new table column with the specified name and type.   
            </summary>
            <remarks>
            <para>The reference to the newly created table column returned by the method
            needs to be converted to a specific column type.</para>
            <para>The current user has to have the permission to change the schema in order to execute this function.</para>
            </remarks>
            <param name="columnName">The column name.</param>
            <param name="columnType">The column type.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is a column with the same name in the same user-defined table.</exception>
            <returns>Returns the newly created table column.</returns>
            <example>
              The following example shows how to create a table column and set its properties.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("students");
            
                        //Creating a table column
                        var column = table.AddColumn("surname", ColumnType.String)
                            as StringColumn;
            
                        //Setting the column properties
                        column.DisplayName = "Student surname";
                        column.IsNotNull = true;
                        column.IsNotEmpty = true;
                        column.MaxLength = 64;
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Table.EnsureColumn(System.Guid,System.String,Centido.Core.ColumnType)">
            <summary>
              Ensures that the table contains a column with the specified id, the specified name and the specified type.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to execute this function.</remarks>
            <param name="columnId">The column id.</param>
            <param name="columnName">The column name.</param>
            <param name="columnType">The column type.</param>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to add a column and
            the current user has no permission to change the schema.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the
            specified id but different column name.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the 
            specified id but different column type.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the specified name
            but different column id.</exception>
            <returns>Returns the table column with the specified id, the specified name and the specified type.</returns>
            <example>
              The following example shows how to ensure a column with the specified id,
            the specified name and the specified type.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("students");
            
                        //Creating a table column
                        var columnId = Guid.NewGuid();
                        table.AddColumn(columnId, "surname", ColumnType.String);
            
                        //Ensuring the surname column
                        table.EnsureColumn(columnId, "surname", ColumnType.String);
                        //Ensuring the age column
                        table.EnsureColumn(Guid.NewGuid(), "age", ColumnType.Integer);
            
                        foreach(var column in table.Columns)
                            Console.WriteLine("Table column: name = {0}", column.Name);
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Table.EnsureColumn(System.String,Centido.Core.ColumnType)">
            <summary>
              Ensures that the table contains a column with the specified name and the specified type.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to execute this function.</remarks>
            <param name="columnName">The column name.</param>
            <param name="columnType">The column type.</param>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to add a column and
            the current user has no permission to change the schema.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the 
            specified name but different column type.</exception>
            <returns>Returns the table column with the specified name and the specified type.</returns>
            <example>
              The following example shows how to ensure that a table has a column with the specified
            name and the specified column type.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("students");
            
                        //Creating a table column
                        table.AddColumn("surname", ColumnType.String);
            
                        //Ensuring the surname column
                        table.EnsureColumn("surname", ColumnType.String);
                        //Ensuring the age column
                        table.EnsureColumn("age", ColumnType.Integer);
            
                        foreach(var column in table.Columns)
                            Console.WriteLine("Table column: name = {0}", column.Name);
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Table.DeleteColumn(Centido.Core.Column)">
            <summary>
              Deletes the table column.
            </summary>
            <remarks>
            <para>Deleting a table column may result in deleting a table index if the column is included in that index.</para>
            <para>The current user has to have the permission to change the schema in order to execute this function.</para> 
            </remarks>
            <param name="column">The table column.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="column"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following example shows how to delete a table column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("students");
            
                        //Creating a table column
                        var column = table.AddColumn("surname", ColumnType.String);
                        
                        //Enumerating table columns
                        foreach(var c in table.Columns)
                        {
                            Console.WriteLine("Column = {0}", c.Name);
                        }
            
                        //Deleting the column
                        table.DeleteColumn(column);
            
                        Console.WriteLine("\nDeleting the column.\n");
            
                        //Enumerating table columns
                        foreach(var c in table.Columns)
                        {
                            Console.WriteLine("Column = {0}", c.Name);
                        }
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Table.DeleteColumn(System.Guid)">
            <summary>
              Deletes the table column with specified id.
            </summary>
            <remarks>
            <para>Deleting a table column may result in deleting a table index if the column is included in that index.</para>
            <para>The current user has to have the permission to change the schema in order to execute this function.</para>
            </remarks>
            <param name="columnId">The table column id.</param>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following example shows how to delete a table column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("students");
            
                        //Creating a table column
                        var column = table.AddColumn("surname", ColumnType.String);
                        
                        //Enumerating table columns
                        foreach(var c in table.Columns)
                        {
                            Console.WriteLine("Column = {0}", c.Name);
                        }
            
                        //Deleting the column
                        table.DeleteColumn(column.Id);
            
                        Console.WriteLine("\nDeleting the column.\n");
            
                        //Enumerating table columns
                        foreach(var c in table.Columns)
                        {
                            Console.WriteLine("Column = {0}", c.Name);
                        }
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Table.DeleteColumn(System.String)">
            <summary>
              Deletes the table column with the specified column name.
            </summary>
            <remarks>
            <para>Deleting a table column may result in deleting a table index if the column is included in that index.</para>
            <para>The column name is always trimmed and lowered.</para>
            <para>The current user has to have the permission to change the schema in order to execute this function.</para>
            </remarks>
            <param name="columnName">The table column.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is no such a column in the table.</exception>
            <example>
              The following example shows how to delete a table column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("students");
            
                        //Creating a table column
                        var column = table.AddColumn("surname", ColumnType.String);
                        
                        //Enumerating table columns
                        foreach(var c in table.Columns)
                        {
                            Console.WriteLine("Column = {0}", c.Name);
                        }
            
                        //Deleting the column
                        table.DeleteColumn(column.Name);
            
                        Console.WriteLine("\nDeleting the column.\n");
            
                        //Enumerating table columns
                        foreach(var c in table.Columns)
                        {
                            Console.WriteLine("Column = {0}", c.Name);
                        }
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Table.InsertRow(Centido.Core.ColumnValue[])">
            <summary>
              Inserts a new row with the specified values of the table columns. 
            </summary>
            <remarks>
            <para>A row will be inserted into the user view of the internal table.</para>
            <para>This method reads the metadata and that's why is slower than a direct query.</para>
            <para>The current user has to have the insert permission on this table in order to execute this function.</para>
            </remarks>
            <param name="values">The table column values.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when one of the specified values of the table columns is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown the current user has no permission to insert into the table.</exception>
            <returns>Returns the id of the inserted row.</returns>
            <example>
              The following example shows how to insert a row with the specified values of the table columns.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("students");
            
                        //Creating table columns
                        var surnameColumn = table.AddColumn("surname", ColumnType.String);
                        var birthdayColumn = table.AddColumn("birthday", ColumnType.DateTime);
            
                        //Granting insert and select permissions
                        table.Grant(DataAction.Insert);
                        table.Grant(DataAction.Select);
                        
                        //Inserting two students
                        table.InsertRow(surnameColumn.Value("Smith"),
                            birthdayColumn.Value(DateTime.Now.AddYears(-25)));
                        table.InsertRow(surnameColumn.Value("Brown"),
                            birthdayColumn.Value(DateTime.Now.AddYears(-18)));
            
                        var surnameColumnName = surnameColumn.Name;
                        var birthdayColumnName = birthdayColumn.Name;
            
                        //Reading the inserted students
                        domain.DbAccess.ExecuteReader(cmd =&gt;
                        {
                            cmd.CommandText = string.Format("select id, {0}, {1} from {2}",
                                surnameColumn.Name, birthdayColumn.Name, table.FullName);
                        }, reader =&gt;
                        {
                            var id = DbValue.GetGuid(reader["id"]);
                            var surname = DbValue.GetString(reader[surnameColumnName]);
                            var birthday = DbValue.GetDateTime(reader[birthdayColumnName]);
            
                            Console.WriteLine("Student id = {0}, surname = {1}, birthday = {2}",
                                id, surname, birthday);
                        });
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Table.InsertRow(System.Guid,Centido.Core.ColumnValue[])">
            <summary>
              Inserts a new row with the specified id and values of the table columns. 
            </summary>
            <remarks>
            <para>A row will be inserted into the user view of the internal table.</para>
            <para>The values of such system columns as Owner, InsertedOn, InsertedBy, UpdatedOn, UpdatedBy and RowVersion are
            set after executing this function.</para>
            <para>This method reads the metadata and that's why is slower than a direct query.</para>
            <para>The current user has to have the insert permission on this table in order to execute this function.</para>
            </remarks>
            <param name="rowId">The id of the new row.</param>
            <param name="values">The table column values.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when one of the specified values of the table columns is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown the current user has no permission to insert into the table.</exception>
            <returns>Returns the id of the inserted row.</returns>
            <example>
              The following example shows how to insert a row with the specified values of the table columns.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("students");
            
                        //Creating table columns
                        var surnameColumn = table.AddColumn("surname", ColumnType.String);
                        var birthdayColumn = table.AddColumn("birthday", ColumnType.DateTime);
            
                        //Granting insert and select permissions
                        table.Grant(DataAction.Insert);
                        table.Grant(DataAction.Select);
                        
                        //Inserting two students
                        table.InsertRow(Guid.NewGuid(), surnameColumn.Value("Smith"),
                            birthdayColumn.Value(DateTime.Now.AddYears(-25)));
                        table.InsertRow(Guid.NewGuid(), surnameColumn.Value("Brown"),
                            birthdayColumn.Value(DateTime.Now.AddYears(-18)));
            
                        var surnameColumnName = surnameColumn.Name;
                        var birthdayColumnName = birthdayColumn.Name;
            
                        //Reading the inserted students
                        domain.DbAccess.ExecuteReader(cmd =&gt;
                        {
                            cmd.CommandText = string.Format("select id, {0}, {1} from {2}",
                                surnameColumn.Name, birthdayColumn.Name, table.FullName);
                        }, reader =&gt;
                        {
                            var id = DbValue.GetGuid(reader["id"]);
                            var surname = DbValue.GetString(reader[surnameColumnName]);
                            var birthday = DbValue.GetDateTime(reader[birthdayColumnName]);
            
                            Console.WriteLine("Student id = {0}, surname = {1}, birthday = {2}",
                                id, surname, birthday);
                        });
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Table.ReadAllRows(System.Action,Centido.Core.ColumnValue[])">
            <summary>
              Reads all rows from the table.
            </summary>
            <remarks>
            <para>This method reads the metadata and that's why is slower than a direct query.</para>
            <para>The row is read from the user view of the internal table.</para>
            <para>The current user has to have the select permission on the table in order
            to execute this function.</para>
            </remarks>
            <param name="readAction">The read action performed upon each row.</param>
            <param name="values">The table column to be read.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when one of the specified values of the table columns is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when no table columns were specified.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to read from the table.</exception>
            <example>
              The following example shows how to read all rows from the table.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("students");
            
                        //Granting all necessary permissions
                        table.GrantAll();
            
                        //Creating two columns
                        var surnameColumn = table.AddColumn("surname", ColumnType.String)
                            as StringColumn;
            
                        var ageColumn = table.AddColumn("age", ColumnType.Integer)
                            as IntColumn;
            
                        //Inserting two rows
                        table.InsertRow(surnameColumn.Value("Smith"), ageColumn.Value(22));
                        table.InsertRow(surnameColumn.Value("Brown"), ageColumn.Value(21));
            
                        //Reading all rows
                        var id = table.SystemColumns.Id.EmptyValue();
                        var surname = surnameColumn.EmptyValue();
                        var age = ageColumn.EmptyValue();
            
                        table.ReadAllRows(() =&gt;
                        {
                            Console.WriteLine("Student: id = {0}, surname = {1}, age = {2}",
                                id.GetGuid(),
                                surname.GetString(),
                                age.GetInteger());
                        }, id, surname, age);
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Table.ReadAllRows(Centido.Core.DataSource,System.Action,Centido.Core.ColumnValue[])">
            <summary>
              Reads all rows from the specified data source.
            </summary>
            <remarks>
            <para>This method reads the metadata and that's why is slower than a direct query.</para>
            <para>The current user has to have the select permission on the specified data source in order
            to execute this function.</para>
            </remarks>
            <param name="source">The target data source.</param>
            <param name="readAction">The read action to be performed upon each row.</param>
            <param name="values">The list of table column to be read.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when one of the specified values of the table columns is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when no table columns were specified.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to read from the table.</exception>
            <example>
              The following example shows how to read all rows from the specified data source.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("students");
            
                        //Granting all necessary permissions
                        table.GrantAll();
            
                        //Creating two columns
                        var surnameColumn = table.AddColumn("surname", ColumnType.String)
                            as StringColumn;
            
                        var ageColumn = table.AddColumn("age", ColumnType.Integer)
                            as IntColumn;
            
                        //Inserting two rows
                        table.InsertRow(surnameColumn.Value("Smith"), ageColumn.Value(22));
                        table.InsertRow(surnameColumn.Value("Brown"), ageColumn.Value(21));
            
                        //Reading all rows
                        var id = table.SystemColumns.Id.EmptyValue();
                        var surname = surnameColumn.EmptyValue();
                        var age = ageColumn.EmptyValue();
            
                        table.ReadAllRows(DataSource.UserView, () =&gt;
                        {
                            Console.WriteLine("Student: id = {0}, surname = {1}, age = {2}",
                                id.GetGuid(),
                                surname.GetString(),
                                age.GetInteger());
                        }, id, surname, age);
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Table.ReadAllRowsWhere(Centido.Core.ColumnValue,System.Action,Centido.Core.ColumnValue[])">
            <summary>
              Reads all rows where the target column contains the specified value.
            </summary>
            <remarks>
            <para>This method reads the metadata and that's why is slower than a direct query.</para>
            <para>The row is read from the user view of the internal table.</para>
            <para>The current user has to have the select permission on the table in order
            to execute this function.</para>
            </remarks>
            <param name="whereColumn">The filter column value.</param>
            <param name="readAction">The read action to be performed upon each result row.</param>
            <param name="values">The list of table column to be read.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="whereColumn"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when one of the specified values of the table columns is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when no table columns were specified.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to read from the table.</exception>
            <example>
              The following example shows how to read all rows where the target column contains the specified value.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("students");
            
                        //Creating a surname column
                        var surnameColumn = table.AddColumn("surname", ColumnType.String);
            
                        //Creating an age column
                        var ageColumn = table.AddColumn("age", ColumnType.Integer);
            
                        //Granting all necessary permissions
                        table.GrantAll();
            
                        table.InsertRow(surnameColumn.Value("Smith"), ageColumn.Value(20));
                        table.InsertRow(surnameColumn.Value("Brown"), ageColumn.Value(20));
                        table.InsertRow(surnameColumn.Value("Anderson"), ageColumn.Value(21));
            
                        //Reading all rows where the age is 20
                        var surname = surnameColumn.EmptyValue();
            
                        table.ReadAllRowsWhere(ageColumn.Value(20), () =&gt;
                        {
                            Console.WriteLine("Student of 20: surname = {0}", surname.GetString());
                        }, surname); 
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Table.ReadAllRowsWhere(Centido.Core.DataSource,Centido.Core.ColumnValue,System.Action,Centido.Core.ColumnValue[])">
            <summary>
              Reads all rows where the target column contains the specified value
            in the specified data source.
            </summary>
            <remarks>
            <para>This method reads the metadata and that's why is slower than a direct query.</para>
            <para>The row is read from the user view of the internal table.</para>
            <para>The current user has to have the select permission on the table in order
            to execute this function.</para>
            </remarks>
            <param name="source">The target data source.</param>
            <param name="whereColumn">The filter column value.</param>
            <param name="readAction">The read action to be performed upon each result row.</param>
            <param name="values">The list of table column to be read.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="whereColumn"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when one of the specified values of the table columns is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when no table columns were specified.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to read from the table.</exception>
            <example>
              The following example shows how to read all rows where the target column contains the specified value.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("students");
            
                        //Creating a surname column
                        var surnameColumn = table.AddColumn("surname", ColumnType.String);
            
                        //Creating an age column
                        var ageColumn = table.AddColumn("age", ColumnType.Integer);
            
                        //Granting all necessary permissions
                        table.GrantAll();
            
                        table.InsertRow(surnameColumn.Value("Smith"), ageColumn.Value(20));
                        table.InsertRow(surnameColumn.Value("Brown"), ageColumn.Value(20));
                        table.InsertRow(surnameColumn.Value("Anderson"), ageColumn.Value(21));
            
                        //Reading all rows where the age is 20
                        var surname = surnameColumn.EmptyValue();
            
                        table.ReadAllRowsWhere(DataSource.UserView, ageColumn.Value(20), () =&gt;
                        {
                            Console.WriteLine("Student of 20: surname = {0}", surname.GetString());
                        }, surname); 
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Table.ReadRow(System.Guid,Centido.Core.ColumnValue[])">
            <summary>
              Reads the columns of the specified table row.   
            </summary>
            <remarks>
            <para>This method reads the metadata and that's why is slower than a direct query.</para>
            <para>The row is read from the user view of the internal table.</para>
            <para>The current user has to have the select permission on this table in order to execute this function.</para>
            </remarks>
            <param name="rowId">The id of the specified row.</param>
            <param name="values">The list of columns to be read.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when one of the specified values of the table columns is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when no table columns were specified.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to read from the table.</exception>
            <returns>Returns true if a row with the specified id was found; otherwise, false.</returns>
            <example>
              The following example shows how to read the values in the system columns.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Granting insert and select permissions
                        table.Grant(DataAction.Insert);
                        table.Grant(DataAction.Select);
            
                        //Inserting a new row
                        var id = table.InsertRow();
            
                        //Reading the values of the system columns
                        var rowOwner = table.SystemColumns.Owner.EmptyValue();
                        var createdBy = table.SystemColumns.CreatedBy.EmptyValue();
                        var createdOn = table.SystemColumns.CreatedOn.EmptyValue();
                        var updatedBy = table.SystemColumns.UpdatedBy.EmptyValue();
                        var updatedOn = table.SystemColumns.UpdatedOn.EmptyValue();
                        var rowVersion = table.SystemColumns.RowVersion.EmptyValue();
            
                        table.ReadRow(id, rowOwner, createdBy, createdOn, updatedBy,
                            updatedOn, rowVersion);
            
                        Console.WriteLine("Id = {0}, owner = {1}, created by = {2}"
                        + " created on = {3}, updated by = {4}, updated on = {5}, version = {6}",
                        id,
                        DbValue.GetString(rowOwner),
                        DbValue.GetString(createdBy),
                        DbValue.GetDateTime(createdOn),
                        DbValue.GetString(updatedBy),
                        DbValue.GetDateTime(updatedOn),
                        DbValue.GetGuid(rowVersion));
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Table.ReadRow(System.Guid,Centido.Core.DataSource,Centido.Core.ColumnValue[])">
            <summary>
              Reads the columns of the specified table row from the specified data source.   
            </summary>
            <remarks>
            <para>This method reads the metadata and that's why is slower than a direct query.</para>
            <para>The current user has to have the select permission on the specified data source in order to execute this function.</para>
            </remarks>
            <param name="rowId">The id of the specified row.</param>
            <param name="source">The source of the rows.</param>
            <param name="values">The list of columns to be read.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when one of the specified values of the table columns is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when no table columns were specified.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to read from the table.</exception>
            <returns>Returns true if a row with the specified id was found; otherwise, false.</returns>
            <example>
              The following example shows how to read the values in the system columns.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");    
            
                        //Granting insert and select permissions
                        table.Grant(DataAction.Insert);
                        table.Grant(DataAction.Select);
            
                        //Inserting a new row
                        var id = table.InsertRow();
            
                        //Reading the values of the system columns
                        var rowOwner = table.SystemColumns.Owner.EmptyValue();
                        var createdBy = table.SystemColumns.CreatedBy.EmptyValue();
                        var createdOn = table.SystemColumns.CreatedOn.EmptyValue();
                        var updatedBy = table.SystemColumns.UpdatedBy.EmptyValue();
                        var updatedOn = table.SystemColumns.UpdatedOn.EmptyValue();
                        var rowVersion = table.SystemColumns.RowVersion.EmptyValue();
            
                        table.ReadRow(id, DataSource.UserView, rowOwner, createdBy, createdOn, updatedBy,
                            updatedOn, rowVersion);
            
                        Console.WriteLine("Id = {0}, owner = {1}, created by = {2}"
                        + " created on = {3}, updated by = {4}, updated on = {5}, version = {6}",
                        id,
                        DbValue.GetString(rowOwner),
                        DbValue.GetString(createdBy),
                        DbValue.GetDateTime(createdOn),
                        DbValue.GetString(updatedBy),
                        DbValue.GetDateTime(updatedOn),
                        DbValue.GetGuid(rowVersion));
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Table.ContainsRow(System.Guid)">
             <summary>
               Checks whether the table contains a row with the specified id.   
             </summary>
             <remarks>
             <para>The current user has to have the select permission on this table in order to execute this function/</para>
             </remarks>
             <param name="rowId">The id of the requested row.</param>
             <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no select permission on the table.</exception>
             <returns>True if the table contains a row with the specified id; otherwise, false.</returns>
             <example>
               The following example shows how to check that the table contains a row with the specified id.
             <code>
                 using System;
                 using Centido.Core;
             
                 class Sample
                 {
                     static void Main()
                     {
                         var domainConfig = new DomainConfiguration()
                         {
                             DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                             DbProviderName = "System.Data.SqlClient"
                         };
                     
                         var domain = Domain.Build(domainConfig);
                         
                         domain.DeleteAll();
                         
                         //Creating a new table
                         var table = domain.AddTable("my_table");
             
                         //Granting all necessary permissions
                         table.GrantAll();
            
                         //Inserting a row
                         Console.WriteLine("Inserting a row");
             
                         var id = table.InsertRow();
             
                         //Checking existence of the row
                         if (table.ContainsRow(id))
                             Console.WriteLine("The table contains a row with id = {0}", id);    
                         else
                             Console.WriteLine("The table doesn't contain a row with id = {0}", id);
             
                         //Deleting the row
                         Console.WriteLine("Deleting the row");
             
                         table.DeleteRow(id);
             
                         //Checking existence of the row
                         if (table.ContainsRow(id))
                             Console.WriteLine("The table contains a row with id = {0}", id);    
                         else
                             Console.WriteLine("The table doesn't contain a row with id = {0}", id);
                     }
                 }
             </code>
             </example>
        </member>
        <member name="M:Centido.Core.Table.ContainsRow(System.Guid,Centido.Core.DataSource)">
             <summary>
               Checks whether the specified data source contains a row with the specified id.
             </summary>
             <remarks>
             <para>The current user has to have the select permission on the specified data source.</para>
             </remarks>
             <param name="rowId">The id of the requested row.</param>
             <param name="source">The data source.</param>
             <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission on the specified data source.</exception>
             <returns>True if the specified data source contains a row with the specified id; otherwise, false.</returns>
             <example>
                 The following example shows how to check that the internal table contains a row with the specified id.
             <code>
                 using System;
                 using Centido.Core;
             
                 class Sample
                 {
                     static void Main()
                     {
                         var domainConfig = new DomainConfiguration()
                         {
                             DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                             DbProviderName = "System.Data.SqlClient"
                         };
                     
                         var domain = Domain.Build(domainConfig);
                         
                         domain.DeleteAll();
                         
                         //Creating a new table
                         var table = domain.AddTable("my_table");
             
                         //Granting all necessary permissions
                         table.GrantAll();
            
                         //Inserting a row
                         Console.WriteLine("Inserting a row");
             
                         var id = table.InsertRow();
             
                         //Checking existence of the row
                         if (table.ContainsRow(id))
                             Console.WriteLine("The internal table contains a row with id = {0}", id);    
                         else
                             Console.WriteLine("The internal table doesn't contain a row with id = {0}", id);
             
                         //Deleting the row
                         Console.WriteLine("Deleting the row");
             
                         table.DeleteRow(id);
             
                         //Checking existence of the row
                         if (table.ContainsRow(id))
                             Console.WriteLine("The internal table contains a row with id = {0}", id);    
                         else
                             Console.WriteLine("The internal table doesn't contain a row with id = {0}", id);
                     }
                 }   
             </code>
             </example>
        </member>
        <member name="M:Centido.Core.Table.UpdateRow(System.Guid,Centido.Core.ColumnValue[])">
             <summary>
               Updates the columns of the row with the specified id.   
             </summary>
             <remarks>
             <para>This method reads the metadata and that's why is slower than a direct query.</para>
             <para>The values of such system columns as UpdatedOn, UpdatedBy and RowVersion are
             reset after executing this function.</para>
             <para>The current user has to have the update permission on this table in order to execute this function.</para>
             </remarks>
             <param name="rowId">The id of the specified row.</param>
             <param name="values">The list of column values.</param>
             <exception cref="T:System.ArgumentNullException">Thrown when one of the column values is null.</exception>
             <exception cref="T:System.ArgumentException">Thrown when no table column to be updated were specified.</exception>
             <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no update permission on the table.</exception>
             <returns>Returns true if a row with the specified id was found; otherwise, false.</returns>
             <example>
               The following example shows how to change the owner of a row.
             <code>
                     using System;
                 using Centido.Core;
             
                 class Sample
                 {
                     static void Main()
                     {
                         var domainConfig = new DomainConfiguration()
                         {
                             DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                             DbProviderName = "System.Data.SqlClient"
                         };
                     
                         var domain = Domain.Build(domainConfig);
                         
                         domain.DeleteAll();
                         
                         //Creating a new table
                         var table = domain.AddTable("my_table");
             
                         //Granting all necessary permissions
                         table.GrantAll();
            
                         //Inserting a row
                         Console.WriteLine("Inserting a row");
             
                         var id = table.InsertRow();
             
                         //Reading the owner of the row
                         Console.WriteLine("Owner = {0}", DbValue.GetString(table.SystemColumns.Owner.Read(id)));
             
                         //Changing the owner
                         Console.WriteLine("Changing the owner");
             
                         table.UpdateRow(id, table.SystemColumns.Owner.Value("another_owner"));
             
                         //Reading the owner of the row
                         Console.WriteLine("Owner = {0}", DbValue.GetString(table.SystemColumns.Owner.Read(id)));
                     }
                 }
             </code>
             </example>
        </member>
        <member name="M:Centido.Core.Table.UpdateRow(System.Guid,System.Guid,Centido.Core.ColumnValue[])">
             <summary>
               Updates the columns of the row with the specified id and the specified row version. 
             </summary>
             <remarks>
             <para>Updating specifying the version of the row guarantees
             that the row has not changed since the last selection.</para>
             <para>This method reads the metadata and that's why is slower than a direct query.</para>
             <para>The values of such system columns as UpdatedOn, UpdatedBy and RowVersion are
             reset after executing this function.</para>
             <para>The current user has to have the update permission on this table in order to execute this function.</para>
             </remarks>
             <param name="rowId">The id of the specified row.</param>
             <param name="expectedRowVersion">The expected row version.</param>
             <param name="values">The list of column values.</param>
             <exception cref="T:System.ArgumentNullException">Thrown when one of the column values is null.</exception>
             <exception cref="T:System.ArgumentException">Thrown when no table column to be updated were specified.</exception>
             <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no update permission on the table.</exception>
             <returns>Returns true if a row with the specified id and row version was found;
             otherwise, false.</returns>
             <example>
               The following example shows how to update a row specifying the id and the version of the row.
             <code>
                 using System;
                 using Centido.Core;
             
                 class Sample
                 {
                     static void Main()
                     {
                         var domainConfig = new DomainConfiguration()
                         {
                             DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                             DbProviderName = "System.Data.SqlClient"
                         };
                     
                         var domain = Domain.Build(domainConfig);
                         
                         domain.DeleteAll();
                         
                         //Creating a new table
                         var table = domain.AddTable("my_table");
             
                         //Granting all necessary permissions
                         table.GrantAll();
            
                         //Inserting a row
                         var id = table.InsertRow();
             
                         //Reading the row version
                         var rowVersion = table.SystemColumns.RowVersion.Read(id).GetGuid().Value;
             
                         //Updating the row specifying the row version
                         var updateResult = table.UpdateRow(id, rowVersion,
                             table.SystemColumns.Owner.Value("new_owner"));
             
                         Console.WriteLine("The first update: result = {0}", updateResult);
                         Console.WriteLine("The row: owner = {0}", table.SystemColumns.Owner.Read(id).GetString());
             
                         //Updating the row specifying the outdated row version
                         updateResult = table.UpdateRow(id, rowVersion,
                             table.SystemColumns.Owner.Value("another_owner"));
             
                         Console.WriteLine("The second update: result = {0}", updateResult);
                         Console.WriteLine("The row: owner = {0}", table.SystemColumns.Owner.Read(id).GetString());             
                     }
                 }
             </code>
             </example>
        </member>
        <member name="M:Centido.Core.Table.DeleteRow(System.Guid)">
             <summary>
               Deletes a row with the specified id.
             </summary>
             <remarks>
             <para>Deleting one row may trigger deleting other rows if they have a reference on the row to be deleted
             and that reference has the CascadeDelete property set to true. If one reference in such a chain
             has the CascadeDelete property set to false then the whole transaction is cancelled
             and an exception is thrown.</para>
             <para>The values of such system columns as DeletedOn and DeletedBy
             a set after executing this function. These system columns are visible in the internal table only.</para>
             <para>The deleted row can be restored afterwards.</para>
             <para>The current user has to have the delete permission on the table in order to execute this function.</para>
             </remarks>
             <param name="rowId">The id of the specified row.</param>
             <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no delete permission on the table.</exception>
             <exception cref="T:Centido.Core.DbOperationException">Thrown when there is no row with the specified id in the table.</exception>
             <exception cref="T:System.Data.Common.DbException">Thrown when a reference in the chain of row deletion has the CascadeDelete property set to false.</exception>
             <returns>Returns true if a row with the specified id was found; otherwise, false.</returns>
             <example>
               The following example shows the effect of cascade delete.
             <code>
                 using System;
                 using Centido.Core;
             
                 class Sample
                 {
                     static void Main()
                     {
                         var domainConfig = new DomainConfiguration()
                         {
                             DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                             DbProviderName = "System.Data.SqlClient"
                         };
                     
                         var domain = Domain.Build(domainConfig);
                         
                         domain.DeleteAll();
                         
                         //Creating a new table
                         var table = domain.AddTable("my_table");
             
                         //Creating another table
                         var anotherTable = domain.AddTable("another_table");
             
                         //Creating a reference
                         var refColumn = table.AddColumn("ref_col", ColumnType.Reference)
                             as RefColumn;
             
                         refColumn.AddTarget(anotherTable).CascadeDelete = true;             
             
                         //Granting all necessary permissions
                         table.GrantAll();
                         anotherTable.GrantAll();
            
                         //Inserting rows
                         Console.WriteLine("Inserting rows");
             
                         var anotherTableId = anotherTable.InsertRow();
                         var id = table.InsertRow(refColumn.Value(anotherTableId));
                         
                         Console.WriteLine("Table - Row count = {0}", table.RowCount);
                         Console.WriteLine("Another table - Row count = {0}", anotherTable.RowCount);
                         
                         //Deleting the row in another table
                         Console.WriteLine("Deleting the row in the second table");
                         
                         anotherTable.DeleteRow(anotherTableId);
                         
                         Console.WriteLine("Table - Row count = {0}", table.RowCount);
                         Console.WriteLine("Another table - Row count = {0}", anotherTable.RowCount);
                     }
                 }
             </code>
             </example>
        </member>
        <member name="M:Centido.Core.Table.DeleteRow(System.Guid,Centido.Core.DataSource)">
             <summary>
               Deletes a row with the specified id from the specified data source.
             </summary>
             <remarks>
             <para>When the data source is the user view then deleting one row may trigger deleting other rows,
             if they have a reference on the row to be deleted
             and that reference has the CascadeDelete property set to true. If one reference in such a chain
             has the CascadeDelete property set to false then the whole transaction is cancelled
             and an exception is thrown.
             When the data source is the internal table then the deletion is taken place as if
             the property CascadeDelete was set to true on all references.</para>
             <para>The values of such system columns as DeletedOn and DeletedBy
             a set after executing this function if the data source is the user view.
             These system columns are visible in the internal table only.</para>
             <para>The current user has to have the delete permission on the specified data source in order to execute this function.</para>
             </remarks>
             <param name="rowId">The id of the specified row.</param>
             <param name="source">The specified data source.</param>
             <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no delete permission on the specified data source.</exception>
             <exception cref="T:Centido.Core.DbOperationException">Thrown when there is no row with the specified id in the specified data source.</exception>
             <exception cref="T:System.Data.Common.DbException">Thrown when the data source is the user view and a reference in the chain of row deletion has the CascadeDelete property set to false.</exception>
             <returns>Returns true if a row with the specified id was found; otherwise, false.</returns>
             <example>
               The following example shows the difference between deleting from the internal table and the table view.
             <code>
                 using System;
                 using Centido.Core;
             
                 class Sample
                 {
                     static void Main()
                     {
                         var domainConfig = new DomainConfiguration()
                         {
                             DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                             DbProviderName = "System.Data.SqlClient"
                         };
                     
                         var domain = Domain.Build(domainConfig);
                         
                         domain.DeleteAll();
                         
                         //Creating a new table
                         var table = domain.AddTable("my_table");
             
                         //Granting all necessary permissions
                         table.GrantAll();
            
                         //Inserting a row
                         Console.WriteLine("Inserting a row");
             
                         var id = table.InsertRow();
                         
                         Console.WriteLine("Row count = {0}", table.RowCount);
                         Console.WriteLine("Internal row count = {0}", table.InternalRowCount);
                         
                         //Deleting the row from the table view
                         Console.WriteLine("Deleting the row from the table view");
                         
                         table.DeleteRow(id, DataSource.UserView);
                         
                         Console.WriteLine("Row count = {0}", table.RowCount);
                         Console.WriteLine("Internal row count = {0}", table.InternalRowCount);
                         
                         //Deleting the row from the internal table
                         Console.WriteLine("Deleting the row from the internal table");
                         
                         table.DeleteRow(id, DataSource.InternalTable);
                         
                         Console.WriteLine("Row count = {0}", table.RowCount);
                         Console.WriteLine("Internal row count = {0}", table.InternalRowCount);
                     }
                 } 
             </code>
             </example>
        </member>
        <member name="M:Centido.Core.Table.DeleteAllRows">
             <summary>
               Deletes all rows in the table.
             </summary>
             <remarks>
             <para>The current user has to have the delete permission on the table in order to execute this function.</para>
             </remarks>
             <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no delete permission on the table.</exception>
             <example>
               The following example shows how to delete all rows in the table.
             <code>
                 using System;
                 using Centido.Core;
             
                 class Sample
                 {
                     static void Main()
                     {
                         var domainConfig = new DomainConfiguration()
                         {
                             DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                             DbProviderName = "System.Data.SqlClient"
                         };
                     
                         var domain = Domain.Build(domainConfig);
                         
                         domain.DeleteAll();
                         
                         //Creating a new table
                         var table = domain.AddTable("my_table");
             
                         //Granting all necessary permissions
                         table.GrantAll();
            
                         //Inserting some rows
                         Console.WriteLine("Inserting some rows");
             
                         for (int i = 0; i &lt; 10; i++)
                             table.InsertRow();
                         
                         Console.WriteLine("Row count = {0}", table.RowCount);
                         
                         //Deleting all rows from the table
                         Console.WriteLine("Deleting the row from the table view");
                         
                         table.DeleteAllRows();
                         
                         Console.WriteLine("Row count = {0}", table.RowCount);
                     }
                 } 
             </code>
             </example>
        </member>
        <member name="M:Centido.Core.Table.RestoreRow(System.Guid)">
             <summary>
               Restores a soft deleted row with the specified id.
             </summary>
             <remarks>
             <para>Restoring the row may result in restoring the rows that were referenced by the first one
             regardless of the value of CascadeDelete property in these references.</para>
             <para>The current user has to have the permission to change the schema in order to execute this function.</para>
             </remarks>
             <param name="rowId">The id of the specified row.</param>
             <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to change the schema.</exception>
             <exception cref="T:Centido.Core.DbOperationException">Thrown when there is no row with the specified id in the internal table.</exception>
             <example>
               The following example shows the effect of cascade restore.
             <code>
                 using System;
                 using Centido.Core;
             
                 class Sample
                 {
                     static void Main()
                     {
                         var domainConfig = new DomainConfiguration()
                         {
                             DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                             DbProviderName = "System.Data.SqlClient"
                         };
                     
                         var domain = Domain.Build(domainConfig);
                         
                         domain.DeleteAll();
                         
                         //Creating a new table
                         var table = domain.AddTable("my_table");
             
                         //Creating another table
                         var anotherTable = domain.AddTable("another_table");
             
                         //Creating a reference
                         var refColumn = table.AddColumn("ref_col", ColumnType.Reference)
                             as RefColumn;
             
                         refColumn.AddTarget(anotherTable).CascadeDelete = true;             
             
                         //Granting all necessary permissions
                         table.GrantAll();
                         anotherTable.GrantAll();
            
                         //Inserting rows
                         Console.WriteLine("Inserting rows");
             
                         var anotherTableId = anotherTable.InsertRow();
                         var id = table.InsertRow(refColumn.Value(anotherTableId));
                         
                         Console.WriteLine("Table - Row count = {0}", table.RowCount);
                         Console.WriteLine("Another table - Row count = {0}", anotherTable.RowCount);
                         
                         //Deleting the row in another table
                         Console.WriteLine("Deleting the row in the second table");
                         
                         anotherTable.DeleteRow(anotherTableId);
                         
                         Console.WriteLine("Table - Row count = {0}", table.RowCount);
                         Console.WriteLine("Another table - Row count = {0}", anotherTable.RowCount);
             
                         //Restoring the row in the first table
                         Console.WriteLine("Deleting the row in the first table");
             
                         table.RestoreRow(id);
             
                         Console.WriteLine("Table - Row count = {0}", table.RowCount);
                         Console.WriteLine("Another table - Row count = {0}", anotherTable.RowCount);
                     }
                 }
             </code>
             </example>
        </member>
        <member name="M:Centido.Core.Table.AddIndex(System.Guid,System.Boolean,Centido.Core.Column[])">
            <summary>
              Creates a new table index with the specified id, index uniqueness and indexed columns.
            </summary>
            <remarks>
            <para>Table indexes help to improve performance of common queries to the table.
            All indexes that target queries to the user view of the table should
            include the IsActive system column because that column is used to build that view.</para>
            <para>If the index is declared to be unique then it guarantees
            the uniqueness of all tuples of value of the indexes columns.</para>
            <para>Columns of text and binary type cannot participate in table indexes because of their maximum value size.
            Columns of string type can participate in table indexes if they have an approprite value in the MaxLength property.</para>
            <para>Two indexes are considered to be different if they have the same columns
            but different order of columns.</para>
            <para>The current user has to have the permission to change the schema in order to execute this function.</para>
            </remarks>
            <param name="indexId">The id of the new index.</param>
            <param name="isUnique">True if the new index is unique; otherwise, false.</param>
            <param name="indexedColumns">The list of columns that should be indexed.</param>
            <returns>Returns the newly created table index.</returns>
            <exception cref="T:System.Data.Common.DbException">Throw when the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is an index with the same id.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="indexedColumns"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the length of <paramref name="indexedColumns"/> is zero.</exception>
            <exception cref="T:System.ArgumentException">Thrown when there are too many columns in the index.</exception>
            <exception cref="T:System.ArgumentException">Thrown when of the columns in <paramref name="indexedColumns"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is an index with the same column set and the same column order in the table.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the value size of some column in the column list exceeds the maximum value for the current dbms.</exception>
            <example>
              The following example shows that two indexes with the same column set but different column order
            are considered to be different.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a custom column
                        var column = table.AddColumn("my_column", ColumnType.Integer);
            
                        //Adding two indexes
                        table.AddIndex(Guid.NewGuid(), true,
                            table.SystemColumns.IsActive, column);
                        table.AddIndex(Guid.NewGuid(), true,
                            column, table.SystemColumns.IsActive);
                        
                        //Enumerating all table indexes
                        foreach(var index in table.Indexes)
                        {
                            Console.WriteLine("Index id = {0}, unique = {1} columns:", index.Id, index.IsUnique);
            
                            foreach(var c in index.Columns)
                                Console.WriteLine("\tColumn name = {0}", c.Name);
                        }
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Table.AddIndex(System.Guid,Centido.Core.Column[])">
            <summary>
              Creates a new non-unique table index with the specified index id and indexed columns.
            </summary>
            <remarks>
            <para>Table indexes help to improve performance of common queries to the table.
            All indexes that target queries to the user view of the table should
            include the IsActive system column because that column is used to build that view.</para>
            <para>Columns of text and binary type cannot participate in table indexes because of their maximum value size.
            Columns of string type can participate in table indexes if they have an approprite value in the MaxLength property.</para>
            <para>Two indexes are considered to be different if they have the same columns
            but different order of columns.</para>
            <para>The current user has to have the permission to change the schema in order to execute this function.</para>
            </remarks>
            <param name="indexId">The id of the new index.</param>
            <param name="indexedColumns">The list of columns that should be indexed.</param>
            <returns>Returns the newly created table index.</returns>
            <exception cref="T:System.Data.Common.DbException">Throw when the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is an index with the same id.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="indexedColumns"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the length of <paramref name="indexedColumns"/> is zero.</exception>
            <exception cref="T:System.ArgumentException">Thrown when there are too many columns in the index.</exception>
            <exception cref="T:System.ArgumentException">Thrown when of the columns in <paramref name="indexedColumns"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is an index with the same column set and the same column order in the table.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the value size of some column in the column list exceeds the maximum value for the current dbms.</exception>
            <example>
              The following example shows that two indexes with the same column set but different column order
            are considered to be different.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a custom column
                        var column = table.AddColumn("my_column", ColumnType.Integer);
            
                        //Adding two indexes
                        table.AddIndex(Guid.NewGuid(),
                            table.SystemColumns.IsActive, column);
                        table.AddIndex(Guid.NewGuid(),
                            column, table.SystemColumns.IsActive);
                        
                        //Enumerating all table indexes
                        foreach(var index in table.Indexes)
                        {
                            Console.WriteLine("Index id = {0}, unique = {1} columns:", index.Id, index.IsUnique);
            
                            foreach(var c in index.Columns)
                                Console.WriteLine("\tColumn name = {0}", c.Name);
                        }
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Table.AddIndex(System.Boolean,Centido.Core.Column[])">
            <summary>
              Creates a new table index with the specfied index uniqueness and indexed columns.
            </summary>
            <remarks>
            <para>Table indexes help to improve performance of common queries to the table.
            All indexes that target queries to the user view of the table should
            include the IsActive system column because that column is used to build that view.</para>
            <para>If the index is declared to be unique then it guarantees
            the uniqueness of all tuples of value of the indexes columns.</para>
            <para>Columns of text and binary type cannot participate in table indexes because of their maximum value size.
            Columns of string type can participate in table indexes if they have an approprite value in the MaxLength property.</para>
            <para>Two indexes are considered to be different if they have the same columns
            but different order of columns.</para>
            <para>The current user has to have the permission to change the schema in order to execute this function.</para>
            </remarks>
            <param name="isUnique">True if the new index is unique; otherwise, false.</param>
            <param name="indexedColumns">The list of columns that should be indexed.</param>
            <returns>Returns the newly created table index.</returns>
            <exception cref="T:System.Data.Common.DbException">Throw when the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is an index with the same id.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="indexedColumns"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the length of <paramref name="indexedColumns"/> is zero.</exception>
            <exception cref="T:System.ArgumentException">Thrown when there are too many columns in the index.</exception>
            <exception cref="T:System.ArgumentException">Thrown when of the columns in <paramref name="indexedColumns"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is an index with the same column set and the same column order in the table.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the value size of some column in the column list exceeds the maximum value for the current dbms.</exception>
            <example>
              The following example shows that two indexes with the same column set but different column order
            are considered to be different.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a custom column
                        var column = table.AddColumn("my_column", ColumnType.Integer);
            
                        //Adding two indexes
                        table.AddIndex(true,
                            table.SystemColumns.IsActive, column);
                        table.AddIndex(true,
                            column, table.SystemColumns.IsActive);
                        
                        //Enumerating all table indexes
                        foreach(var index in table.Indexes)
                        {
                            Console.WriteLine("Index id = {0}, unique = {1} columns:", index.Id, index.IsUnique);
            
                            foreach(var c in index.Columns)
                                Console.WriteLine("\tColumn name = {0}", c.Name);
                        }
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Table.AddIndex(Centido.Core.Column[])">
            <summary>
              Creates a new non-unique table index with the specified indexed columns.
            </summary>
            <remarks>
            <para>Table indexes help to improve performance of common queries to the table.
            All indexes that target queries to the user view of the table should
            include the IsActive system column because that column is used to build that view.</para>
            <para>Columns of text and binary type cannot participate in table indexes because of their maximum value size.
            Columns of string type can participate in table indexes if they have an approprite value in the MaxLength property.</para>
            <para>Two indexes are considered to be different if they have the same columns
            but different order of columns.</para>
            <para>The current user has to have the permission to change the schema in order to execute this function.</para>
            </remarks>
            <param name="indexedColumns">The list of columns that should be indexed.</param>
            <returns>Returns the newly created table index.</returns>
            <exception cref="T:System.Data.Common.DbException">Throw when the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is an index with the same id.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="indexedColumns"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the length of <paramref name="indexedColumns"/> is zero.</exception>
            <exception cref="T:System.ArgumentException">Thrown when there are too many columns in the index.</exception>
            <exception cref="T:System.ArgumentException">Thrown when of the columns in <paramref name="indexedColumns"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is an index with the same column set and the same column order in the table.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the value size of some column in the column list exceeds the maximum value for the current dbms.</exception>
            <example>
              The following example shows that two indexes with the same column set but different column order
            are considered to be different.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a custom column
                        var column = table.AddColumn("my_column", ColumnType.Integer);
            
                        //Adding two indexes
                        table.AddIndex(Guid.NewGuid(),
                            table.SystemColumns.IsActive, column);
                        table.AddIndex(Guid.NewGuid(),
                            column, table.SystemColumns.IsActive);
                        
                        //Enumerating all table indexes
                        foreach(var index in table.Indexes)
                        {
                            Console.WriteLine("Index id = {0}, unique = {1} columns:", index.Id, index.IsUnique);
            
                            foreach(var c in index.Columns)
                                Console.WriteLine("\tColumn name = {0}", c.Name);
                        }
                    }
                }   
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Table.DeleteIndex(System.Guid)">
            <summary>
              Deletes a table index with the specified id.
            </summary>
            <remarks>
            <para>The current user has to have the permission to change the schema in order to execute this function.</para>
            </remarks>
            <param name="indexId">The id of the index.</param>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following example shows how to delete default table indexes.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Granting all necessary permissions
                        table.GrantAll();
            
                        //Deleting default table indexes
                        foreach(var index in table.Indexes)
                            table.DeleteIndex(index.Id);
            
                        //Inserting two with the same id
                        var id = Guid.NewGuid();
            
                        table.InsertRow(id);
                        table.InsertRow(id);
            
                        Console.WriteLine("Row count = {0}", table.RowCount);
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Table.DeleteIndex(Centido.Core.Index)">
            <summary>
              Deletes the specified table index.
            </summary>
            <remarks>
            <para>The current user has to have the permission to change the schema in order to execute this function.</para>
            </remarks>
            <param name="index">The index to be deleted.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="index"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following example shows how to delete default table indexes.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Granting all necessary permissions
                        table.GrantAll();
            
                        //Deleting default table indexes
                        foreach(var index in table.Indexes)
                            table.DeleteIndex(index);
            
                        //Inserting two with the same id
                        var id = Guid.NewGuid();
            
                        table.InsertRow(id);
                        table.InsertRow(id);
            
                        Console.WriteLine("Row count = {0}", table.RowCount);
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Table.GetIndex(System.Guid)">
            <summary>
              Retrieves a table index with the specified id.
            </summary>
            <param name = "indexId">The specified index id.</param>
            <returns>Returns a table index with the specified id if there is one; therwise, returns null.</returns>
            <example>
              The following example shows how to retrieve a table index specifying the index id.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Enumerating default table indexes
                        foreach(var index in table.Indexes)
                        {
                            var retrivedIndex = table.GetIndex(index.Id);
            
                            Console.WriteLine("Index id = {0}", retrivedIndex.Id);
                        }
                    }
                }   
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Table.GrantAll">
            <summary>
              Grants all table permissions to the current user.
            </summary>
            <remarks>
            <para>Executing this function grants full access select, insert, update and delete permission
            on the user view of the table to the current user.</para>
            <para>Table permissions should not duplicate each other. Two table permissions
            are considered to be duplicate if they have the same data action and the same security principal.</para>
            <para>The current user has to have the permission to change security settings in order to execute this function.</para>
            </remarks>
            <returns>Returns the list of granted table permissions.</returns>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when one of the privileges is already granted to the current user.</exception>
            <example>
              The following example shows the permissions granted when executing this function. 
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        Console.WriteLine("Count of current user permissions = {0}",
                            domain.CurrentUser.TablePermissions.Count());
                        
                        //Granting all permissions
                        Console.WriteLine("Granting the permissions");
                    
                        table.GrantAll();
            
                        //Enumerating the granted permissions
                        foreach(var perm in domain.CurrentUser.TablePermissions)
                        {
                            Console.WriteLine("Principal = {0}, action = {1}, level = {2}",
                                perm.Principal.Name,
                                perm.DataAction,
                                perm.AccessLevel);
                        }
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Table.GrantAll(Centido.Core.IPrincipal)">
            <summary>
              Grants all table permissions to the specified security principal.
            </summary>
            <remarks>
            <para>Security principal principal stands for a security role or a user.</para>
            <para>Table permissions should not duplicate each other. Two table permissions
            are considered to be duplicate if they have the same data action and the same security principal.</para>
            <para>The current user has to have the permission to change security settings in order to execute this function.</para>
            </remarks>
            <param name="principal">The security principal.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="principal"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when one of the privileges is already granted to the specified security principal.</exception>
            <returns>Returns the list of granted table permissions.</returns>
            <example>
                The following example shows the permissions granted when executing this function.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a new user
                        var newUser = domain.AddUser("new_user", "P@ssw0rd");
            
                        Console.WriteLine("Count of the new user permissions = {0}",
                            newUser.TablePermissions.Count());
                        
                        //Granting all permissions
                        Console.WriteLine("Granting table permissions to the new user");
                    
                        table.GrantAll(newUser);
            
                        //Enumerating the granted permissions
                        foreach(var perm in newUser.TablePermissions)
                        {
                            Console.WriteLine("Principal = {0}, action = {1}, level = {2}",
                                perm.Principal.Name,
                                perm.DataAction,
                                perm.AccessLevel);
                        }
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Table.GrantAll(System.String)">
            <summary>
              Grants all table permissions to a security principal with the specified name.
            </summary>
            <remarks>
            <para>Security principal principal stands for a security role or a user.</para>
            <para>Table permissions should not duplicate each other. Two table permissions
            are considered to be duplicate if they have the same data action and the same security principal.</para>
            <para>The current user has to have the permission to change security settings in order to execute this function.</para>
            </remarks>
            <param name="principalName">The name of the security principal.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="principalName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="principalName"/> is an empty string.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when one of the privileges is already granted to the specified security principal.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is no security principal with the specified name.</exception>
            <returns>Returns the list of granted table permissions.</returns>
            <example>
                The following example shows the permissions granted when executing this function.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a new role
                        var newRole = domain.AddRole("new_role");
            
                        Console.WriteLine("Count of the new user permissions = {0}",
                            newRole.TablePermissions.Count());
                        
                        //Granting all permissions
                        Console.WriteLine("Granting table permissions to the new role");
                    
                        table.GrantAll(newRole.Name);
            
                        //Enumerating the granted permissions
                        foreach(var perm in newRole.TablePermissions)
                        {
                            Console.WriteLine("Principal = {0}, action = {1}, level = {2}",
                                perm.Principal.Name,
                                perm.DataAction,
                                perm.AccessLevel);
                        }
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Table.Grant(Centido.Core.DataAction,Centido.Core.AccessLevel)">
            <summary>
              Grants a table permission of the specified type with the specified level to the current user.   
            </summary>
            <remarks>
            <para>Table permissions should not duplicate each other. Two table permissions
            are considered to be duplicate if they have the same data action and the same security principal.</para>
            <para>The current user has to have the permission to change security settings in order to execute this function.</para>
            </remarks>
            <param name="dataAction">The data action to be permitted.</param>
            <param name="accessLevel">The requested access level.</param>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the specified permission was already granted to the current user.</exception>
            <returns>Returns the granted table permission.</returns>
            <example>
              The following example shows how to grant the select unit permission to the current user.  
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
                        
                        //Creating other users
                        var firstUser = domain.AddUser("first_user", "P@ssw0rd");
                        var secondUser = domain.AddUser("second_user", "P@ssw0rd");
            
                        //Creating a business unit
                        var unit = domain.AddUnit();
            
                        //Adding two users into that unit
                        unit.AddUser(domain.CurrentUser);
                        unit.AddUser(firstUser);
                        //The second user is no added
            
                        //Inserting a row owned by the first user
                        table.Grant(firstUser, DataAction.Insert);
                        domain.Logon("first_user", "P@ssw0rd").GetTable("my_table").InsertRow();
            
                        //Inserting a row owned by the second user
                        table.Grant(secondUser, DataAction.Insert);
                        domain.Logon("second_user", "P@ssw0rd").GetTable("my_table").InsertRow();
            
                        //Inserting a row owned by the current user
                        table.Grant(DataAction.Insert);
                        table.InsertRow();
            
                        //Granting the select unit permission to the current user
                        table.Grant(DataAction.Select, AccessLevel.Unit);
            
                        //Selecting the owners of the rows visible to the current user
                        domain.DbAccess.ExecuteReader(cmd =&gt;
                            {
                            cmd.CommandText = string.Format("select id, owner from {0}", table.FullName);
                            }, reader =&gt;
                            {
                                Console.WriteLine("Row: id = {0}, owner = {1}",
                                    reader.GetGuid("id"), reader.GetString("owner"));
                            });             
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Table.Grant(Centido.Core.IPrincipal,Centido.Core.DataAction,Centido.Core.AccessLevel)">
            <summary>
              Grants a table permission of the specified type with the specified level to the specified security principal. 
            </summary>
            <remarks>
            <para>Security principal principal stands for a security role or a user.</para>
            <para>Table permissions should not duplicate each other. Two table permissions
            are considered to be duplicate if they have the same data action and the same security principal.</para>
            <para>The current user has to have the permission to change security settings in order to execute this function.</para>
            </remarks>
            <param name="principal">The specified security principal.</param>
            <param name="dataAction">The data action to be permitted.</param>
            <param name="accessLevel">The requested access level.</param>
            <returns>Returns the granted table permission.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="principal"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the specified permission was already granted to the specified security principal.</exception>
            <example>
              The following example shows how to grant the select unit permission to a security role.   
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
                        
                        //Creating other users
                        var firstUser = domain.AddUser("first_user", "P@ssw0rd");
                        var secondUser = domain.AddUser("second_user", "P@ssw0rd");
            
                        //Creating a business unit
                        var unit = domain.AddUnit();
            
                        //Adding two users into that unit
                        unit.AddUser(domain.CurrentUser);
                        unit.AddUser(firstUser);
                        //The second user is no added
            
                        //Inserting a row owned by the first user
                        table.Grant(firstUser, DataAction.Insert);
                        domain.Logon("first_user", "P@ssw0rd").GetTable("my_table").InsertRow();
            
                        //Inserting a row owned by the second user
                        table.Grant(secondUser, DataAction.Insert);
                        domain.Logon("second_user", "P@ssw0rd").GetTable("my_table").InsertRow();
            
                        //Inserting a row owned by the current user
                        table.Grant(DataAction.Insert);
                        table.InsertRow();
            
                        //Creating a security role
                        var role = domain.AddRole("my_role");
            
                        //Granting the select unit permission to that security role
                        table.Grant(role, DataAction.Select, AccessLevel.Unit);
            
                        //Adding the current user to that role
                        role.AddUser(domain.CurrentUser);
            
                        //Selecting the owners of the rows visible to the current user
                        domain.DbAccess.ExecuteReader(cmd =&gt;
                            {
                            cmd.CommandText = string.Format("select id, owner from {0}", table.FullName);
                            }, reader =&gt;
                            {
                                Console.WriteLine("Row: id = {0}, owner = {1}",
                                    reader.GetGuid("id"), reader.GetString("owner"));
                            });             
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Table.Grant(System.String,Centido.Core.DataAction,Centido.Core.AccessLevel)">
            <summary>
               Grants a table permission of the specified type with the specified level to a security principal with the specified name.
            </summary>
            <remarks>
            <para>Security principal principal stands for a security role or a user.</para>
            <para>Table permissions should not duplicate each other. Two table permissions
            are considered to be duplicate if they have the same data action and the same security principal.</para>
            <para>The current user has to have the permission to change security settings in order to execute this function.</para>
            </remarks>
            <param name="principalName">The name of the security principal.</param>
            <param name="dataAction">The data action to be permitted.</param>
            <param name="accessLevel">The requested access level.</param>
            <returns>Returns the granted table permission.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="principalName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="principalName"/> is an empty string.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is no security principal with the specified name.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the specified permission was already granted to the specified security principal.</exception>
            <example>
              The following example shows how to grant the select unit permission to a security role.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
                        
                        //Creating other users
                        var firstUser = domain.AddUser("first_user", "P@ssw0rd");
                        var secondUser = domain.AddUser("second_user", "P@ssw0rd");
            
                        //Creating a business unit
                        var unit = domain.AddUnit();
            
                        //Adding two users into that unit
                        unit.AddUser(domain.CurrentUser);
                        unit.AddUser(firstUser);
                        //The second user is no added
            
                        //Inserting a row owned by the first user
                        table.Grant(firstUser, DataAction.Insert);
                        domain.Logon("first_user", "P@ssw0rd").GetTable("my_table").InsertRow();
            
                        //Inserting a row owned by the second user
                        table.Grant(secondUser, DataAction.Insert);
                        domain.Logon("second_user", "P@ssw0rd").GetTable("my_table").InsertRow();
            
                        //Inserting a row owned by the current user
                        table.Grant(DataAction.Insert);
                        table.InsertRow();
            
                        //Creating a security role
                        var role = domain.AddRole("my_role");
            
                        //Granting the select unit permission to that security role
                        table.Grant(role.Name, DataAction.Select, AccessLevel.Unit);
            
                        //Adding the current user to that role
                        role.AddUser(domain.CurrentUser);
            
                        //Selecting the owners of the rows visible to the current user
                        domain.DbAccess.ExecuteReader(cmd =&gt;
                            {
                            cmd.CommandText = string.Format("select id, owner from {0}", table.FullName);
                            }, reader =&gt;
                            {
                                Console.WriteLine("Row: id = {0}, owner = {1}",
                                    reader.GetGuid("id"), reader.GetString("owner"));
                            });             
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Table.GetPrincipalPermissions(Centido.Core.IPrincipal)">
            <summary>
              Gets the table permissions granted to the specified security principal.
            </summary>
            <remarks>
            <para>The current user has to have the permission to change security settings in order to execute this function.</para>
            </remarks>
            <param name="principal">The specified security principal.</param>
            <returns>Returns the list of the table permissions granted to the specified security principal.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="principal"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following example shows how to get the permissions granted to the current user.   
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
                        
                        //Granting permissions to the current user
                        table.GrantAll();
            
                        //Getting the permissions granted to the current user
                        foreach(var perm in table.GetPrincipalPermissions(domain.CurrentUser))
                        {
                            Console.WriteLine("Principal = {0}, action = {1}, level = {2}",
                                perm.Principal.Name,
                                perm.DataAction,
                                perm.AccessLevel);
                        }
                    }
                }   
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Table.GetPrincipalPermissions(System.String)">
            <summary>
              Gets the table permissions granted to a security principal with the specified name.
            </summary>
            <remarks>
            <para>The current user has to have the permission to change security settings in order to execute this function.</para>
            </remarks>
            <param name="principalName">The specified principal name.</param>
            <returns>Returns the list of the table permissions granted to a security principal with the specified name.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="principalName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="principalName"/> is an empty string.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following example shows how to get the permissions granted to the current user.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
                        
                        //Granting permissions to the current user
                        table.GrantAll();
            
                        //Getting the permissions granted to the current user
                        foreach(var perm in table.GetPrincipalPermissions(domain.CurrentUser.Name))
                        {
                            Console.WriteLine("Principal = {0}, action = {1}, level = {2}",
                                perm.Principal.Name,
                                perm.DataAction,
                                perm.AccessLevel);
                        }   
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Table.Revoke(Centido.Core.TablePermission)">
            <summary>
              Revokes the specified table permission.
            </summary>
            <remarks>
            <para>The current user has to have the permission to change security settings in order to execute this function.</para>
            </remarks>
            <param name="permission">The specified table permission.</param>
            <exception cref="T:System.Data.Common.DbException">Thrown when the value of <paramref name="permission"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the specified permission was not granted on the table.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following example shows granting an revoking the insert permission.
            <code>
                using System;
                using System.Data.Common;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
                        
                        //Granting the insert permission to the current user
                        var insertPerm = table.Grant(DataAction.Insert);
            
                        Console.WriteLine("Granting the insert permission");
            
                        //Inserting a row
                        table.InsertRow();
            
                        Console.WriteLine("The row was inserted");
            
                        //Revoking the insert permission
                        table.Revoke(insertPerm);
            
                        Console.WriteLine("Revoking the insert permission");
            
                        try
                        {
                            table.InsertRow();
                        }
                        catch(DbException)
                        {
                            Console.WriteLine("Row inserting failed");
                        }
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Table.RevokeAll">
            <summary>
              Revokes all permissions granted on the table.
            </summary>
            <remarks>
            <para>The current user has to have the permission to change security settings in order to execute this function.</para>
            </remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following example shows how to revoke all permission granted on a table.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
                        
                        //Granting permissions to the current user
                        table.GrantAll();
                        
                        //Creating a role
                        var role = domain.AddRole("my_role");
            
                        //Granting permissions to the role
                        table.GrantAll(role);
            
                        Console.WriteLine("Table permissions: count = {0}", table.Permissions.Count());
            
                        //Revoking all permissions
                        table.RevokeAll();
            
                        Console.WriteLine("Revoking all permissions");
            
                        Console.WriteLine("Table permissions: count = {0}", table.Permissions.Count());
                    }
                }   
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Table.RevokeAll(System.String)">
            <summary>
              Revokes all table permissions granted a security principal with the specified name.
            </summary>
            <remarks>
            <para>The current user has to have the permission to change security settings in order to execute this function.</para>
            </remarks>
            <param name="principalName">The name of the security principal.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="principalName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="principalName"/> is an empty string.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following example shows how to revoke table permissions granted to the current user.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
                        
                        //Granting permissions to the current user
                        table.GrantAll();
                        
                        //Creating a role
                        var role = domain.AddRole("my_role");
            
                        //Granting permissions to the role
                        table.GrantAll(role);
            
                        //Enumerating the granted permissions
                        foreach(var perm in table.Permissions)
                        {
                            Console.WriteLine("Principal = {0}, action = {1}, level = {2}",
                                perm.Principal.Name,
                                perm.DataAction,
                                perm.AccessLevel);
                        }
            
                        //Revoking all permissions
                        table.RevokeAll(domain.CurrentUser.Name);
            
                        Console.WriteLine("Revoking all permissions");
            
                        foreach(var perm in table.Permissions)
                        {
                            Console.WriteLine("Principal = {0}, action = {1}, level = {2}",
                                perm.Principal.Name,
                                perm.DataAction,
                                perm.AccessLevel);
                        }
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Table.RevokeAll(Centido.Core.IPrincipal)">
            <summary>
              Revokes all table permissions granted to the specified security principal.
            </summary>
            <remarks>
              The current user has to have the permission to change security settings in order to execute this function.
            </remarks>
            <param name="principal">The security principal.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="principal"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
               The following example shows how to revoke table permissions granted to the current user.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
                        
                        //Granting permissions to the current user
                        table.GrantAll();
                        
                        //Creating a role
                        var role = domain.AddRole("my_role");
            
                        //Granting permissions to the role
                        table.GrantAll(role);
            
                        //Enumerating the granted permissions
                        foreach(var perm in table.Permissions)
                        {
                            Console.WriteLine("Principal = {0}, action = {1}, level = {2}",
                                perm.Principal.Name,
                                perm.DataAction,
                                perm.AccessLevel);
                        }
            
                        //Revoking all permissions
                        table.RevokeAll(domain.CurrentUser);
            
                        Console.WriteLine("Revoking all permissions");
            
                        foreach(var perm in table.Permissions)
                        {
                            Console.WriteLine("Principal = {0}, action = {1}, level = {2}",
                                perm.Principal.Name,
                                perm.DataAction,
                                perm.AccessLevel);
                        }
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Table.RevokeAll(Centido.Core.DataAction)">
            <summary>
              Revokes all table permissions of the specified data action.
            </summary>
            <remarks>The current user has to have the permission to change security settings in order to execute this function.</remarks>
            <param name="dataAction">The data action of the permissions to be deleted.</param>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following example shows how to revoke all table permissions of the specified data action.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
                        
                        //Granting permissions to the current user
                        table.GrantAll();
                        
                        //Creating a role
                        var role = domain.AddRole("my_role");
            
                        //Granting permissions to the role
                        table.GrantAll(role);
            
                        //Enumerating the granted permissions
                        foreach(var perm in table.Permissions)
                        {
                            Console.WriteLine("Principal = {0}, action = {1}, level = {2}",
                                perm.Principal.Name,
                                perm.DataAction,
                                perm.AccessLevel);
                        }
            
                        //Revoking all permissions of the select data action
                        table.RevokeAll(DataAction.Select);
            
                        Console.WriteLine("Revoking all permissions of the select data action");
            
                        foreach(var perm in table.Permissions)
                        {
                            Console.WriteLine("Principal = {0}, action = {1}, level = {2}",
                                perm.Principal.Name,
                                perm.DataAction,
                                perm.AccessLevel);
                        }
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Table.RevokeAll(Centido.Core.DataAction,System.String)">
            <summary>
              Revokes all table permissions of the specified data action and of the principal with the specified name.
            </summary>
            <remarks>The current user has to have the permission to change security settings in order to execute this function.</remarks>
            <param name="dataAction">The data action of the permissions to be deleted.</param>
            <param name="principalName">The principal name of the permissions to be deleted.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="principalName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="principalName"/> is an empty string.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following example shows how to revoke all table permissions of the specified data action and of the principal with the specified name.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
                        
                        //Granting permissions to the current user
                        table.GrantAll();
                        
                        //Creating a role
                        var role = domain.AddRole("my_role");
            
                        //Granting permissions to the role
                        table.GrantAll(role);
            
                        //Enumerating the granted permissions
                        foreach(var perm in table.Permissions)
                        {
                            Console.WriteLine("Principal = {0}, action = {1}, level = {2}",
                                perm.Principal.Name,
                                perm.DataAction,
                                perm.AccessLevel);
                        }
            
                        //Revoking all permissions of the select data action
                        table.RevokeAll(DataAction.Select, role.Name);
            
                        Console.WriteLine("Revoking all permissions of the select data action and of the principal with the specified name");
            
                        foreach(var perm in table.Permissions)
                        {
                            Console.WriteLine("Principal = {0}, action = {1}, level = {2}",
                                perm.Principal.Name,
                                perm.DataAction,
                                perm.AccessLevel);
                        }
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Table.RevokeAll(Centido.Core.DataAction,Centido.Core.IPrincipal)">
            <summary>
              Revokes all table permissions of the specified data action and of the specified principal.
            </summary>
            <remarks>The current user has to have the permission to change security settings in order to execute this function.</remarks>
            <param name="dataAction">The data action of the permissions to be deleted.</param>
            <param name="principal">The principal of the permissions to be deleted.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="principal"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following example shows how to revoke all table permissions of the specified data action and of the specified principal.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
                        
                        //Granting permissions to the current user
                        table.GrantAll();
                        
                        //Creating a role
                        var role = domain.AddRole("my_role");
            
                        //Granting permissions to the role
                        table.GrantAll(role);
            
                        //Enumerating the granted permissions
                        foreach(var perm in table.Permissions)
                        {
                            Console.WriteLine("Principal = {0}, action = {1}, level = {2}",
                                perm.Principal.Name,
                                perm.DataAction,
                                perm.AccessLevel);
                        }
            
                        //Revoking all permissions of the select data action
                        table.RevokeAll(DataAction.Select, role);
            
                        Console.WriteLine("Revoking all permissions of the select data action and of the principal with the specified name");
            
                        foreach(var perm in table.Permissions)
                        {
                            Console.WriteLine("Principal = {0}, action = {1}, level = {2}",
                                perm.Principal.Name,
                                perm.DataAction,
                                perm.AccessLevel);
                        }
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Table.ReadProperty(System.String)">
            <summary>
              Reads the table property.
            </summary>
            <param name = "propertyName">The property name.</param>
            <returns>Returns the property value.</returns>
        </member>
        <member name="M:Centido.Core.Table.WriteProperty(System.String,System.Object,System.Data.OdbcType)">
            <summary>
              Writes the table property.
            </summary>
            <param name = "propertyName">The property name.</param>
            <param name = "propertyValue">The property value.</param>
            <param name = "propertyType">The property database type.</param>
        </member>
        <member name="M:Centido.Core.Table.CreateColumn(System.Byte[],System.String,System.String,System.String,System.String,System.Boolean,System.Int32,System.Int32)">
            <summary>
              Creates an instance of the table column.
            </summary>
            <param name = "columnId">The id of the column.</param>
            <param name = "columnTableName">The name of the parent table.</param>
            <param name="columnName">The column name.</param>
            <param name="displayName">The column display name.</param>
            <param name="description">The column description.</param>
            <param name="isNotNull">The column ability to hold null values.</param>
            <param name="orderIndex">The column order index</param>
            <param name="customizationlevel">The column customization level.</param>
            <returns>Returns an instance of the table column.</returns>
        </member>
        <member name="M:Centido.Core.Table.GetTableByColumnId(System.Guid)">
            <summary>
              Gets a table by an id of one of the table columns.
            </summary>
            <param name = "columnId">The column id.</param>
            <returns>Returns a table that contains the column if such a table exists; otherwise; null.</returns>
        </member>
        <member name="M:Centido.Core.Table.GetDataSourceName(Centido.Core.DataSource)">
            <summary>
              Gets the name of the specified data source.
            </summary>
            <param name="source">The specified data source.</param>
            <returns>Returns the name of the data source.</returns>
        </member>
        <member name="M:Centido.Core.Table.InsertRowImplementation(System.Guid,Centido.Core.ColumnValue[])">
            <summary>
              Inserts a new row with the specified id.
            </summary>
            <param name = "rowId">The id of the new row.</param>
            <param name = "values">The list of column values.</param>
        </member>
        <member name="M:Centido.Core.Table.ReadAllRowsImplementation(Centido.Core.DataSource,System.Action,Centido.Core.ColumnValue[])">
            <summary>
              Reads all rows in the specified data source.
            </summary>
            <param name="source">The target data source.</param>
            <param name="readAction">The read action performed on each row.</param>
            <param name="values">The list of table column to be read.</param>
        </member>
        <member name="M:Centido.Core.Table.ReadAllRowsWhereImplementation(Centido.Core.DataSource,Centido.Core.ColumnValue,System.Action,Centido.Core.ColumnValue[])">
            <summary>
              Reads all rows where the specified column contains the specified value
            in the specified data source.
            </summary>
            <param name="source">The target data source.</param>
            <param name="whereColumn">The filter column value.</param>
            <param name="readAction">The read action to be performed upon each result row.</param>
            <param name="values">The list of table column to be read.</param>
        </member>
        <member name="M:Centido.Core.Table.ReadRowImplementation(System.Guid,Centido.Core.DataSource,Centido.Core.ColumnValue[])">
            <summary>
              Reads a row with the specified id.
            </summary>
            <param name = "rowId">The id of the row.</param>
            <param name = "source">The target data source.</param>
            <param name = "values">The list of the column values to be read.</param>
            <returns>Returns true if a row with the specified id was found; otherwise, false.</returns>
        </member>
        <member name="M:Centido.Core.Table.UpdateRowImplementation(System.Guid,System.Nullable{System.Guid},Centido.Core.ColumnValue[])">
            <summary>
              Updates a row with the specified id and the expected row version in the table.
            </summary>
            <param name = "rowId">The id of the row.</param>
            <param name="exprectedRowVersion">The expected row version.</param>
            <param name = "values">The list of the column values to be updated.</param>
            <returns>Returns true if a row with the specified id and the specified version (if it was specified) was found; otherwise, false.</returns>
        </member>
        <member name="M:Centido.Core.Table.DeleteRowImplementation(System.Guid,Centido.Core.DataSource)">
            <summary>
              Deletes a row with the specified id.
            </summary>
            <param name = "rowId">The id of the row.</param>
            <param name = "source">The target data source.</param>
            <returns>Returns true if a row with the specified id was found; otherwise, false.</returns>
        </member>
        <member name="M:Centido.Core.Table.ContainsRowImplementation(System.Guid,Centido.Core.DataSource)">
            <summary>
              Checks whether the target data source contains a row with the specified id.
            </summary>
            <param name = "rowId">The id of the row.</param>
            <param name = "source">The target data source.</param>
            <returns>Returns true if the target data source contains a row with the specifed id; otherwise, false.</returns>
        </member>
        <member name="M:Centido.Core.Table.DeleteAllRowsImplementation">
            <summary>
              Deletes all rows in the table.
            </summary>
        </member>
        <member name="M:Centido.Core.Table.Refresh">
            <summary>
              Refreshes the properties of the table.
            </summary>
        </member>
        <member name="P:Centido.Core.Table.FullName">
            <summary>
              Gets the fully qualified table name that includes the schema name.
            </summary>
            <example>
              The following example shows how to use this property when building custom queries.    
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
            
                        domain.DeleteAll();
            
                        //Creating a new table
                        var table = domain.AddTable("my_table");    
            
                        //Creating a new integer column
                        var column = table.AddColumn("my_column", ColumnType.Integer);
            
                        //Granting all necessary permissions
                        table.GrantAll();
            
                        //Inserting 100 rows
                        Random rand = new Random();
            
                        for(int i = 0; i &lt; 100; i++)
                            table.InsertRow(column.Value(rand.Next() % 1000));
            
                        var columnName = column.Name;
            
                        //Searching for the inserted values that are lower than 500
                        domain.DbAccess.ExecuteReader(cmd =>
                        {
                            cmd.CommandText = string.Format("select id, {0} from {1} where {2} &lt; {3}",
                                column.Name,
                                table.FullName,
                                column.Name,
                                domain.DbAccess.FormatMarker("max_value"));  
                            
                            cmd.Parameters.Add(domain.DbAccess.CreateParameter("max_value", OdbcType.Int, 500));
                        }, reader =>
                        {
                            Console.WriteLine("Row id = {0}, column value = {1}",
                                DbValue.GetGuid(reader["id"]),
                                DbValue.GetInteger(reader[columnName]));
                        });
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.Table.FullInternalName">
            <summary>
              Gets the fully qualified internal table table name that includes the schema name.
            </summary>
            <remarks>
              Internal table is used for storing all data including the rows that were soft deleted.
              Only users that have the permission to modify the schema have access to internal tables.
            </remarks>
            <example>
              The following example shows how to restore soft deleted rows changing the IsActive field in the internal table.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
            
                        domain.DeleteAll();
            
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Granting all necessary permissions
                        table.GrantAll();
            
                        //Inserting two rows
                        table.InsertRow();
                        table.InsertRow();
            
                        Console.WriteLine("Row count = {0}", table.RowCount);
                        
                        //Deleting the rows
                        table.DeleteAllRows();
            
                        Console.WriteLine("Deleting the rows");
            
                        Console.WriteLine("Row count = {0}", table.RowCount);
            
                        //Changing the IsActive field in the internal table
                        domain.DbAccess.ExecuteNonQuery(cmd =>
                        {
                            cmd.CommandText = string.Format("update {0} set {1} = 1",
                                table.FullInternalName,
                                table.SystemColumns.IsActive.Name);
                        });
            
                        Console.WriteLine("Restoring the rows");
            
                        Console.WriteLine("Row count = {0}", table.RowCount);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.Table.Domain">
            <summary>
              Gets the domain used to connect to the database.
            </summary>
        </member>
        <member name="P:Centido.Core.Table.Description">
            <summary>
              Gets or sets the table description.
            </summary>
            <remarks>
            <para>The current user has to have the permission to change the schema in order to set this property.</para>
            <para>The value of this field is trimmed when it is not null.</para>  
            </remarks>
            <value>The string that represents the table description or null.</value>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to set this property.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to read this property on a deleted table.</exception>
            <example>
              The following example shows how to set the description of the table.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
            
                        //Creating a new table
                        var table = domain.AddTable("students");
                        
                        //Setting the table description
                        table.Description = "This table stores a student list.";
            
                        //Reading the table description
                        Console.WriteLine("Table name = {0}, description = {1}",
                            table.Name,
                            table.Description);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.Table.DisplayName">
            <summary>
              Gets or sets the display name of the table in a singular form.
            </summary>
            <remarks>
            <para>The current user has to have the permission to change the schema in order to set this property.</para>
            <para>The value of this field is trimmed when it is not null.</para>
            </remarks>
            <value>The string that represents the table display name in singular form or null.</value>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to set this property.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to read this property on a deleted table.</exception>
        </member>
        <member name="P:Centido.Core.Table.RowCount">
            <summary>
              Gets the number of rows in the table.   
            </summary>
            <remarks>
            <para>The current user has to have the select permission on this table in order to read this property.</para>
            <para>The number returned by this property doesn't include the rows that were soft deleted.</para>
            </remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no select permission on the table.</exception>
            <example>
              The following example shows how to get the number of rows in a user-defined table.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll(); 
                        
                        //Adding a new table
                        var table = domain.AddTable("my_table");
            
                        //Granting all necessary permissions
                        table.GrantAll();   
            
                        //Inserting 10 rows
                        for (int i = 0; i &lt; 10; i++)
                            table.InsertRow();
            
                        Console.WriteLine("Row count = {0}", table.RowCount);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.Table.DeletedRowCount">
            <summary>
              Gets the number of rows that were soft deleted.   
            </summary>
            <remarks>
            <para>The current user has to have the permission to change the schema in order to read this property.</para>
            </remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to change the schema.</exception>
            <example>
              The following example shows how to get the number of soft deleted rows in a user-defined table.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Adding a new table
                        var table = domain.AddTable("my_table");
            
                        //Granting all necessary permissions
                        table.GrantAll();
            
                        //Inserting a row
                        var id = table.InsertRow();
            
                        Console.WriteLine("Row count = {0} (soft deleted rows = {1})",
                            table.RowCount,
                            table.DeletedRowCount);
                        
                        //Deleting the row
                        table.DeleteRow(id);
            
                        Console.WriteLine("Deleting the row.");
            
                        Console.WriteLine("Row count = {0} (soft deleted rows = {1})",
                            table.RowCount,
                            table.DeletedRowCount);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.Table.InternalRowCount">
            <summary>
              Gets the number of rows in the internal table.
            </summary>
            <remarks>
            <para>The internal table stores all the data including the soft deleted rows.</para>
            <para>The current user has to have the permission to change the schema in order to read this property.</para>
            </remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to change the schema.</exception>
            <example>
              The following example shows how to get the number rows in the internal table.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Adding a new table
                        var table = domain.AddTable("my_table");
            
                        //Granting all necessary permissions
                        table.GrantAll();
            
                        //Inserting a row
                        var id = table.InsertRow();
            
                        Console.WriteLine("Row count = {0} (internal rows = {1})",
                            table.RowCount,
                            table.InternalRowCount);
                        
                        //Deleting the row
                        table.DeleteRow(id);
            
                        Console.WriteLine("Deleting the row.");
            
                        Console.WriteLine("Row count = {0} (internal rows = {1})",
                            table.RowCount,
                            table.InternalRowCount);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.Table.Columns">
            <summary>
              Gets the list of the table columns.
            </summary>
            <example>
              The following example creates a new table and shows the table colums.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Adding a new table
                        var table = domain.AddTable("my_table");
            
                        //Adding a new column
                        table.AddColumn("my_column", ColumnType.Integer);
            
                        //Enumerating all table columns
                        foreach(var column in table.Columns)
                        {
                            Console.WriteLine("Column name = {0}, Is system column = {1}",
                                column.Name,
                                column.IsSystem);
                        }
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.Table.SystemColumns">
            <summary>
              Gets the container that stores references to the system columns of the current table.
            </summary>
            <remarks>The system column is a column that is created in every user-defined table
            and cannot be deleted or altered.</remarks>
            <value>An instance of the <see cref="T:Centido.Core.SystemColumns"/> class.</value>
            <example>
              The following example shows how to change the owner of the inserted row.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Adding a new table
                        var table = domain.AddTable("my_table");
            
                        //Granting all necessary permissions
                        table.GrantAll();
            
                        //Inserting a row
                        var id = table.InsertRow();
            
                        //Reading the row owner
                        var rowOwner = table.SystemColumns.Owner.EmptyValue();
            
                        table.ReadRow(id, rowOwner);
            
                        Console.WriteLine("Row owner = {0}", DbValue.GetString(rowOwner));  
            
                        //Changing the row owner
                        Console.WriteLine("Changing the row owner.");
            
                        table.UpdateRow(id, table.SystemColumns.Owner.Value("new_owner"));
            
                        //Reading the row owner
                        rowOwner = table.SystemColumns.Owner.EmptyValue();
            
                        table.ReadRow(id, rowOwner);
            
                        Console.WriteLine("Row owner = {0}", DbValue.GetString(rowOwner));
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.Table.RefColumns">
            <summary>
              Gets the list of the reference columns of the table.
            </summary>
        </member>
        <member name="P:Centido.Core.Table.RefsFrom">
            <summary>
              Gets the list of reference targets from the current table.
            </summary>
            <example>
              The following example shows how to get the list of references from the current table.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Adding the first table
                        var firstTable = domain.AddTable("first_table");
            
                        //Adding the second table
                        var secondTable = domain.AddTable("second_table");
            
                        //Adding the third table
                        var thirdTable = domain.AddTable("third_table");
            
                        //Adding reference column
                        var refColumn = thirdTable.AddColumn("my_ref", ColumnType.Reference)
                            as RefColumn;   
            
                        refColumn.AddTarget(firstTable);
                        refColumn.AddTarget(secondTable);
            
                        //Enumerating references from the third table
                        foreach(var refTarget in thirdTable.RefsFrom)
                        {
                            Console.WriteLine("Reference from the current table to {0}", refTarget.RefTable.Name);
                        }
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.Table.RefsTo">
            <summary>
              Gets the list of references to the current table.
            </summary>
            <example>
              The following example shows how to get the list of references to the current table.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Adding the first table
                        var firstTable = domain.AddTable("first_table");
            
                        //Adding the second table
                        var secondTable = domain.AddTable("second_table");
            
                        //Adding the third table
                        var thirdTable = domain.AddTable("third_table");
            
                        //Adding references column to the first table
                        var refColumn3 = thirdTable.AddColumn("my_ref", ColumnType.Reference)
                            as RefColumn; 
                        refColumn3.AddTarget(firstTable);
            
                        var refColumn2 = secondTable.AddColumn("my_ref", ColumnType.Reference)
                            as RefColumn; 
                        refColumn2.AddTarget(firstTable);
            
                        //Enumerating references to the first table
                        foreach(var refTarget in firstTable.RefsTo)
                        {
                            Console.WriteLine("Reference to the current table from {0}", refTarget.Table.Name);
                        }
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.Table.Indexes">
            <summary>
              Gets the list of table indexes.
            </summary>
            <example>
              The following example shows the list of default table indexes.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");    
            
                        //Enumerating default table indexes
                        foreach(var index in table.Indexes)
                        {
                            Console.WriteLine("Index id = {0}, unique = {1}", index.Id, index.IsUnique);
            
                            foreach(var column in index.Columns)
                            {
                                Console.WriteLine("\tColumn = {0}", column.Name);
                            }
                        }   
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.Table.Permissions">
            <summary>
              Gets the list of the permissions granted on the current table.
            </summary>
            <remarks>The current user has to have the permission to change security settings in order to read this property.</remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to read this property.</exception>
            <example>
              The following example shows the permissions granted when invoking the GrantAll method.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");    
            
                        //Invoking the GrantAll method
                        table.GrantAll();
            
                        //Enumerating the granted permissions
                        foreach(var perm in table.Permissions)
                            Console.WriteLine("Data operation = {0}, access level = {1}",
                                perm.DataAction, perm.AccessLevel);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.Table.AccessRights">
            <summary>
              Gets the list of low level security access rights.
            </summary>
            <remarks>
            <para>The list of security access rigths is formed dynamically based on the granted permissions.
            There are two types of security access rights. The first one (<see cref="T:Centido.Core.TableFullAccessRight"/>)
            denotes the right to perform certain operation on the full range of rows.
            The second one (<see cref="T:Centido.Core.TableAccessRight"/>) denotes the right
            to perform certain operation on the rows that have a specific owner.</para>
            <para>The current user has to have the permission to change security settings in order to read this property.</para>
            </remarks>
            <example>
              The following example shows the list of dynamically formed low level security access rigths
              when granting permission to select rows from the current business unit.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
            
                        //Creating three users
                        var firstUser = domain.AddUser("first_user", "P@ssw0rd");
                        var secondUser = domain.AddUser("second_user", "P@ssw0rd");
                        var thirdUser = domain.AddUser("third_user", "P@ssw0rd");
            
                        //Enrolling this users in the same business unit
                        var unit = domain.AddUnit();
            
                        unit.AddUser(firstUser);
                        unit.AddUser(secondUser);
                        unit.AddUser(thirdUser);
            
                        //Granting permission to select rows of the unit to the first user
                        table.Grant(firstUser, DataAction.Select, AccessLevel.Unit);
            
                        //Enumerating the security access rights
                        foreach(var accessRight in table.AccessRights)
                        {
                            if (accessRight is TableAccessRight)
                            {
                                var tar = accessRight as TableAccessRight;
            
                                Console.WriteLine("User = {0}, data action = {1}, owner = {2}",
                                    tar.User.Name, tar.DataAction, tar.Owner.Name);
                            }
                            else if (accessRight is TableFullAccessRight)
                            {
                                var tfar = accessRight as TableFullAccessRight;
            
                                Console.WriteLine("User = {0}, data action = {1} (full access)",
                                    tfar.User.Name, tfar.DataAction);
                            }
                        }
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.Table.Id">
            <summary>
              Gets the id of the table.
            </summary>
            <example>
              The following example shows how to add a table with the specified id.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();     
                        
                        //Creating the table id
                        var tableId = Guid.NewGuid();
            
                        Console.WriteLine("Id = {0}", tableId);
            
                        //Creating a table with specified id
                        var table = domain.AddTable(tableId, "my_table");
            
                        Console.WriteLine("Table id = {0}", table.Id);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.Table.Name">
            <summary>
              Gets or sets the table name.
            </summary>
            <remarks>
            <para>The current user has to have the permission to change the schema in order to set this property.</para>
            <para>The name of the table is always lowered and trimmed.</para>
            </remarks>
            <exception cref="T:System.ArgumentNullException">Thrown when trying to set the property to null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when trying to set the property to an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the new name is not a valid identifier.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to set this property.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is a table with the same name.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to read this property on a deleted table.</exception>
            <example>
               The following example shows how to rename a user-defined table.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
            
                        //Creating a new table with the name in upper case
                        var table = domain.AddTable("My_Table");
            
                        //Showing the name of the table
                        Console.WriteLine("Table name = {0}", table.Name);
            
                        //Renaming the table with the name in upper case
                        table.Name = "My_New_Table";
            
                        Console.WriteLine("Renaming the table");
            
                        //Showing the name of the table
                        Console.WriteLine("Table name = {0}", table.Name);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.Table.UnitLevelSecurity">
            <summary>
              Gets or sets the availability of unit level security for the table.
            </summary>
            <remarks>
            <para>Turning unit level security off means limiting the scope
            of table permissions. After that each permission is considered as granted
            on all rows of the table or none rows at all. All permissions on user
            rows, unit rows etc. are considered as permissions on all rows.</para>
            <para>The current user has to have the permission to change security
            settings in order to set this property.</para>
            </remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user
            has no permission to set this property.</exception>
            <example>
              The following example shows how to turn unit level permissions off.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
            
                        //Creating another user
                        var user = domain.AddUser("my_user", "P@ssw0rd");
            
                        //Granting the user permission to select only his rows
                        table.Grant(user, DataAction.Select, AccessLevel.Own);
                        table.Grant(user, DataAction.Insert);
            
                        var userTable = domain.Logon("my_user", "P@ssw0rd").GetTable("my_table");
            
                        //Inserting a row as the current user
                        table.InsertRow();
            
                        //Inserting a row as the user
                        userTable.InsertRow();
            
                        Console.WriteLine("User: table row count = {0}", userTable.RowCount);   
            
                        Console.WriteLine("Turning unit level security off");
                        
                        table.UnitLevelSecurity = false;
            
                        Console.WriteLine("User: table row count = {0}", userTable.RowCount);
                    }
                }
            </code>
            </example>
        </member>
        <member name="T:Centido.Core.Domain">
            <summary>
              A central point of access to all of the database services.
            </summary>
            <seealso cref="T:Centido.Core.DomainConfiguration"/>
            <seealso cref="T:Centido.Core.DbmsInfo"/>
            <remarks>
              <para>The <see cref="T:Centido.Core.Domain"/> class is the base wrapper class for accessing the database services
                such as changing database schema, configuring security etc.
                An instance of the <see cref="T:Centido.Core.DomainConfiguration"/> class is used in order to initialize a <see cref="T:Centido.Core.Domain"/> class.
                Two parameters of the <see cref="T:Centido.Core.DomainConfiguration"/> class are required in order to establish
                a connection. They are the connection string and the database provider name. If Oracle database is used,
                then specifying application schema name is also necessary.
              </para>
              <para>
                It is important to ensure that the necessary metadata was installed in the target database prior to
                initializing an instance of the <seealso cref="T:Centido.Core.Domain"/> class; otherwise a database
                connnection exception will be produced. 
              </para>
            </remarks>
            <example>
              The following code installs the metadata for a Sql Server database.
              <code>
                using System;
                using Centido.Core;
            
                class DomainBuildSample
                {
                    static void Main()
                    {
                        new SqlServerInstaller().Install(@"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=application_user;Password=P@ssw0rd;",
                        "System.Data.SqlClient");
                    }
                }
              </code>
              The following code initializes an instance of <see cref="T:Centido.Core.Domain"/> and displays the names of all user-defined tables.
              <code>
                using System;
                using Centido.Core;
            
                class DomainBuildSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        Console.WriteLine("Database name = {0}", domain.DbName);
                    
                        //Enumerating user-defined tables
                        Console.WriteLine("User-defined tables (count = {0})", domain.Tables.Count());
                    
                        foreach(var table in domain.Tables)
                        {
                            Console.WriteLine("\tTable name = {0}", table.Name);
                        }
                    }
                }
              </code>
            </example>
        </member>
        <member name="F:Centido.Core.Domain._configuration">
            <summary>
              Current domain configuration parameters.
            </summary>
        </member>
        <member name="F:Centido.Core.Domain._dbmsInfo">
            <summary>
              Dbms information class.
            </summary>
        </member>
        <member name="F:Centido.Core.Domain._dbName">
            <summary>
              The database name.
            </summary>
        </member>
        <member name="F:Centido.Core.Domain._recycleBin">
            <summary>
              The availability of the recycle bin.
            </summary>
        </member>
        <member name="M:Centido.Core.Domain.#ctor">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.Domain"/> class.
            </summary>
        </member>
        <member name="M:Centido.Core.Domain.Build(Centido.Core.DomainConfiguration)">
            <summary>
              Creates a new instance of <see cref="T:Centido.Core.Domain"/> using the specified domain configuration parameters.
            </summary>
            <param name="configuration">The domain configuration parameters.</param>
            <returns>Returns a new instance of <see cref="T:Centido.Core.Domain"/>.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="configuration"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the domain has failed to connect to the database.</exception>
            <example>
              The following example shows how build a domain.
            <code>
                using System;
                using Centido.Core;
            
                class DomainSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        Console.WriteLine("Database name = {0}", domain.DbName);
                    }
                }   
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Domain.GetTable(System.Guid)">
            <summary>
              Retrieves a user-defined table with the specified id.
            </summary>
            <param name = "tableId">The id of the table to be retrieved.</param>
            <returns>Returns a user-defined table with the specified id or null if there isn't such a table.</returns>
            <example>
              The following example shows how to get a user-defined table by id.
            <code>
                using System;
                using Centido.Core;
            
                class DomainSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
            
                        //Creating a new table
                        var table = domain.AddTable("my_table");
                        table.DisplayName = "My table";
                        
                        //Searching for the table by its id
                        Console.WriteLine("Table: display name = {0}",
                            domain.GetTable(table.Id).DisplayName);
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Domain.GetTable(System.String)">
            <summary>
              Retrieves a user-defined table with the specified name
            </summary>
            <param name="tableName">The name of the table to be retrieved.</param>
            <returns>Returns a user-defined table with the specified name or null if there isn't such a table.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <c>tableName</c> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <c>tableName</c> is an empty string.</exception>
            <example>
              The following example shows how to get a user-defined table by name.
            <code>
                using System;
                using Centido.Core;
            
                class DomainSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
            
                        //Creating a new table
                        var table = domain.AddTable("my_table");
                        table.DisplayName = "My table";
                        
                        //Searching for the table by its id
                        Console.WriteLine("Table: display name = {0}",
                            domain.GetTable(table.Name).DisplayName);
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Domain.AddTable(System.Guid,System.String,Centido.Core.TableParameters)">
            <summary>
              Adds a new user-defined table with the specified id, name and auxiliary parameters.
            </summary>
            <remarks>
              <para>The current user has to have the permission to change the schema in order to execute this function.</para>
              <para>Note that the value of <paramref name="tableName"/> is always lowered and trimmed.</para>
            </remarks>
            <param name="tableId">The id of the new table.</param>
            <param name="tableName">The name of the new table.</param>
            <param name="parameters">The auxiliary table creation parameters.</param>
            <returns>Returns the newly created user-defined table.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="tableName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="tableName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="parameters"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="tableName"/> is too long.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="tableName"/> doesn't start with a letter.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="tableName"/> contains a forbidden symbol.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="tableName"/> is a keyword in one of the supported dbms.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when a table with the same id already exists.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when a table with the same name already exists.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following example shows how to create a new user-defined table without default indexes.
            <code>
                using System;
                using Centido.Core;
            
                class DomainSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
            
                        domain.DeleteAll();
                    
                        //Creating a table without default indexes
                        var table = domain.AddTable("my_table",
                            new TableParameters() { DefaultIndexes = false });
            
                        Console.WriteLine("Table index count = {0}", table.Indexes.Count());
            
                        //Inserting two rows with the same id
                        var rowId = Guid.NewGuid();
            
                        table.GrantAll();
                        table.InsertRow(rowId);
                        table.InsertRow(rowId);
            
                        //Reading the inserted rows
                        domain.DbAccess.ExecuteReader(cmd =&gt;
                        {
                            cmd.CommandText = string.Format("select id from {0}", table.FullName); 
                        }, reader =&gt;
                        {
                            Console.WriteLine("Row id = {0}", reader.GetGuid("id"));
                        });
                    }
                }   
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Domain.AddTable(System.Guid,System.String)">
            <summary>
              Adds a new user-defined table with the specified id and name.
            </summary>
            <remarks>
              The current user has to have the permission to change the schema in order to execute this function.
            </remarks>
            <param name="tableId">The id of the new table.</param>
            <param name="tableName">The name of the new table.</param>
            <returns>Returns the newly created user-defined table.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="tableName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="tableName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="tableName"/> is too long.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="tableName"/> doesn't start with a letter.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="tableName"/> contains a forbidden symbol.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="tableName"/> is a keyword in one of the supported dbms.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when a table with the same id already exists.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when a table with the same name already exists.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following example shows how to create a new user-definde table with the specified id and name.
            <code>
                using System;
                using Centido.Core;
            
                class DomainSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
            
                        domain.DeleteAll();
            
                        //Generating the table id
                        var tableId = Guid.NewGuid();
            
                        Console.WriteLine("Table id = {0}", tableId);
            
                        //Creating a new table with the specified id and name
                        var table = domain.AddTable(tableId, "my_table");
            
                        Console.WriteLine("Table: id = {0}, name = {1}", table.Id, table.Name);
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Domain.AddTable(System.String,Centido.Core.TableParameters)">
            <summary>
              Adds a new user-defined table with the specified name and auxiliary parameters.
            </summary>
            <remarks>
              The current user has to have the permission to change the schema in order to execute this function.
            </remarks>
            <param name="tableName">The name of the new table.</param>
            <param name="parameters">The auxiliary table creation parameters.</param>
            <returns>Returns the newly created user-defined table.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="tableName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="tableName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="parameters"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="tableName"/> is too long.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="tableName"/> doesn't start with a letter.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="tableName"/> contains a forbidden symbol.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="tableName"/> is a keyword in one of the supported dbms.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when a table with the same name already exists.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following shows how to create a new user-defined table specifying the system column ids.
            <code>
                using System;
                using Centido.Core;
            
                class DomainSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
            
                        domain.DeleteAll();
            
                        //Generating the system column ids
                        var idColumnId = Guid.NewGuid();
                        var ownerColumnId = Guid.NewGuid();
                        var createdByColumnId = Guid.NewGuid();
                        var createdOnColumnId = Guid.NewGuid();
                        var updatedByColumnId = Guid.NewGuid();
                        var updatedOnColumnId = Guid.NewGuid();
                        var deletedByColumnId = Guid.NewGuid();
                        var deletedOnColumnId = Guid.NewGuid();
                        var isActiveColumnId = Guid.NewGuid();
                        var rowVersionColumnId = Guid.NewGuid();
            
                        Console.WriteLine("The system column ids:");
                        Console.WriteLine("\tId column: {0}", idColumnId);
                        Console.WriteLine("\tOwner column: {0}", ownerColumnId);
                        Console.WriteLine("\tCreatedBy column: {0}", createdByColumnId);
                        Console.WriteLine("\tCreatedOn column: {0}", createdOnColumnId);
                        Console.WriteLine("\tUpdatedBy column: {0}", updatedByColumnId);
                        Console.WriteLine("\tUpdatedOn column: {0}", updatedOnColumnId);
                        Console.WriteLine("\tDeletedBy column: {0}", deletedByColumnId);
                        Console.WriteLine("\tDeletedOn column: {0}", deletedOnColumnId);
                        Console.WriteLine("\tIsActive column: {0}", isActiveColumnId);
                        Console.WriteLine("\tRowVersion column: {0}", rowVersionColumnId);
            
                        //Creating a new table with the specified system column ids
                        var table = domain.AddTable("my_table", new TableParameters()
                            {
                            IdColumnId = idColumnId,
                            OwnerColumnId = ownerColumnId,
                            CreatedByColumnId = createdByColumnId,
                            CreatedOnColumnId = createdOnColumnId,
                            UpdatedByColumnId = updatedByColumnId,
                            UpdatedOnColumnId = updatedOnColumnId,
                            DeletedByColumnId = deletedByColumnId,
                            DeletedOnColumnId = deletedOnColumnId,
                            IsActiveColumnId = isActiveColumnId,
                            RowVersionColumnId = rowVersionColumnId
                            });
            
                        //Enumerating the system column ids
                        Console.WriteLine("The created system column ids:");
            
                        foreach(var column in table.Columns)
                        {
                            Console.WriteLine("\tColumn: name = {0}, id = {1}", column.Name, column.Id);
                        } 
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Domain.AddTable(System.String)">
            <summary>
              Adds a new user-defined table with the specified name.
            </summary>
            <remarks>
              The current user has to have the permission to change the schema in order to execute this function.
            </remarks>
            <param name="tableName">The name of the new table.</param>
            <returns>Returns the newly created user-defined table.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="tableName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="tableName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="tableName"/> is too long.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="tableName"/> doesn't start with a letter.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="tableName"/> contains a forbidden symbol.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="tableName"/> is a keyword in one of the supported dbms.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when a table with the same name already exists.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following code shows how to create a new user-defined table with the specified name.
            <code>
                using System;
                using Centido.Core;
            
                class DomainSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
            
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var studentTable = domain.AddTable("students");
                        
                        //Creating a table column
                        var nameColumn = studentTable.AddColumn("name", ColumnType.String)
                            as StringColumn;
                        nameColumn.DisplayName = "The student name";
            
                        //Enumerating the table columns
                        foreach(var column in studentTable.Columns)
                        {
                            Console.WriteLine("Column: name = {0}, display name = {1}",
                                column.Name, column.DisplayName);
                        }
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Domain.DeleteTable(Centido.Core.Table)">
            <summary>
              Deletes the specified user-defined table.
            </summary>
            <remarks>
              The current user has to have the permission to change the schema in order to execute this function.
            </remarks>
            <param name="table">The user-defined table to be deleted.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is no user-defined table with such id.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the table is referenced by another table.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following example shows how to delete the specified user-defined table.
            <code>
                using System;
                using Centido.Core;
            
                class DomainSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
            
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
                        
                        Console.WriteLine("Table count = {0}", domain.Tables.Count());
            
                        //Deleting that table
                        domain.DeleteTable(table);
            
                        Console.WriteLine("Table count = {0}", domain.Tables.Count());
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Domain.DeleteTable(System.Guid)">
            <summary>
              Deletes a user-defined table with the specified id.
            </summary>
            <remarks>
              The current user has to have the permission to change the schema in order to execute this function.
            </remarks>
            <param name="tableId">The id of the user-defined table to be deleted.</param>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is no user-defined table with such id.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the table is referenced by another table.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following example shows how to delete a user-defined table with the specified id.
            <code>
                using System;
                using Centido.Core;
            
                class DomainSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
            
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
                        
                        Console.WriteLine("Table count = {0}", domain.Tables.Count());
            
                        //Deleting that table
                        domain.DeleteTable(table.Id);
            
                        Console.WriteLine("Table count = {0}", domain.Tables.Count());
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Domain.DeleteTable(System.String)">
            <summary>
              Deletes a user-defined table with the specified name.
            </summary>
            <remarks>
              The current user has to have the permission to change the schema in order to execute this function.
            </remarks>
            <param name="tableName">The name of the table to be deleted.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="tableName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="tableName"/> is an empty string.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is no user-defined table with such name.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the table is referenced by another table.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following example shows how to delete a user-defined table with the specified name.
            <code>
                using System;
                using Centido.Core;
            
                class DomainSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
            
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
                        
                        Console.WriteLine("Table count = {0}", domain.Tables.Count());
            
                        //Deleting that table
                        domain.DeleteTable(table.Name);
            
                        Console.WriteLine("Table count = {0}", domain.Tables.Count());
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Domain.DeleteAllTables">
            <summary>
              Deletes all user-defined tables.
            </summary>
            <remarks>
              The current user has to have the permission to change the schema in order to execute this function.
            </remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following example shows how to delete all user-defined tables from the domain.
            <code>
                using System;
                using Centido.Core;
            
                class DomainSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
            
                        domain.DeleteAll();
                        
                        //Creating two tables
                        domain.AddTable("first_table");
                        domain.AddTable("second_table");
                        
                        Console.WriteLine("Table count = {0}", domain.Tables.Count());
            
                        //Deleting all table
                        domain.DeleteAllTables();
            
                        Console.WriteLine("Table count = {0}", domain.Tables.Count());
                    }
                }   
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Domain.GetObjectFullName(System.String)">
            <summary>
              Gets the database object fully qualified name.
            </summary>
            <param name="objectName">The object name.</param>
            <returns>Returns fully qualified object name.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="objectName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="objectName"/> is an empty string.</exception>
        </member>
        <member name="M:Centido.Core.Domain.AddUnit(System.Guid)">
            <summary>
              Adds a new business unit with the specified id.
            </summary>
            <remarks>
              The current user has to have the permission to change security settings in order to execute this function.
            </remarks>
            <param name="unitId">The id of the new unit.</param>
            <returns>Returns the newly created business unit.</returns>
            <exception cref="T:System.Data.Common.DbException">Thrown when a unit with the same id already exists.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following example shows how create a new business unit with the sepcified id.
            <code>
                using System;
                using Centido.Core;
            
                class DomainSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
            
                        domain.DeleteAll();
                        
                        //Creating the business unit id
                        var unitId = Guid.NewGuid();
            
                        Console.WriteLine("Unit id = {0}", unitId);
            
                        //Creating the business unit
                        var unit = domain.AddUnit(unitId);
            
                        Console.WriteLine("Unit: id = {0}", unit.Id);
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Domain.AddUnit">
            <summary>
              Adds a new business unit.
            </summary>
            <remarks>
              The current user has to have the permission to change security settings in order to execute this function.
            </remarks>
            <returns>Returns the newly created business unit.</returns>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following example whows how build a hierarchy of business units.
            <code>
                using System;
                using Centido.Core;
            
                class DomainSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
            
                        domain.DeleteAll();
                        
                        //Creating business units
                        var firstChildUnit = domain.AddUnit();
                        firstChildUnit.DisplayName = "The first child unit";
            
                        var secondChildUnit = domain.AddUnit();
                        secondChildUnit.DisplayName = "The second child unit";
            
                        var topUnit = domain.AddUnit();
                        topUnit.DisplayName = "The top unit";
            
                        //Creating the hierarchy
                        firstChildUnit.AddParent(topUnit);
                        secondChildUnit.AddParent(topUnit);
            
                        //Displaying the hierarchy
                        foreach(var unit in domain.Units.Where(u =&gt; u.Parents.Count() == 0))
                        {
                            Console.WriteLine("Unit: display name = {0}", unit.DisplayName);
            
                            foreach(var child in unit.ChildUnits)
                            {
                                Console.WriteLine("\tUnit: display name = {0}", child.DisplayName);
                            }
                        }
                    }
                }   
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Domain.GetUnit(System.Guid)">
            <summary>
              Retrieves a business unit with the specified id.
            </summary>
            <param name = "unitId">The business unit id.</param>
            <returns>Returns a business unit with the specified id if there is one; otherwise returns null.</returns>
            <example>
              The following example shows how to get a business unit with the specified id.
            <code>
                using System;
                using Centido.Core;
            
                class DomainSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
            
                        domain.DeleteAll();
                        
                        //Creating a new business unit
                        var unit = domain.AddUnit();
                        unit.DisplayName = "A business unit";
            
                        //Getting the unit by id
                        Console.WriteLine("Unit: display name = {0}", domain.GetUnit(unit.Id).DisplayName);
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Domain.GetUnit(System.String)">
            <summary>
              Retrieves a business unit with the specified name.
            </summary>
            <remarks>The unit name parameter is trimmed before processing.</remarks>
            <param name="unitName">The business unit name.</param>
            <exception cref="T:System.ArgumentNullException">Trown when the value of <paramref name="unitName"/> is null.</exception>
            <returns>Returns a business unit with the specified name if there is one; otherwise returns null.</returns>
            <example>
              The following example shows how to get a business unit with the specified name.
            <code>
                using System;
                using Centido.Core;
            
                class DomainSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
            
                        domain.DeleteAll();
                        
                        //Creating a new business unit
                        var unit = domain.AddUnit();
                        unit.Name = "my_unit";
            
                        //Getting the unit by name
                        Console.WriteLine("Unit: name = {0}", domain.GetUnit(unit.Name).Name);
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Domain.DeleteUnit(Centido.Core.Unit)">
            <summary>
              Deletes the specified business unit.
            </summary>
            <remarks>
              The current user has to have the permission to change security settings in order to execute this function.
            </remarks>
            <param name="unit">The business unit to be deleted.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="unit"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is no unit with such id.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following example shows how to delete the specified business unit.
            <code>
                using System;
                using Centido.Core;
            
                class DomainSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
            
                        domain.DeleteAll();
                        
                        //Creating a business unit that will be deleted
                        var unitToDelete = domain.AddUnit();
            
                        //Adding the current user into that unit
                        unitToDelete.AddUser(domain.CurrentUser);
            
                        //Creating a child business unit
                        var childUnit = domain.AddUnit();
                        childUnit.AddParent(unitToDelete);
            
                        //Creating a parent business unit
                        var parentUnit = domain.AddUnit();
                        unitToDelete.AddParent(parentUnit);
            
                        Console.WriteLine("Current user: unit count = {0}", domain.CurrentUser.Units.Count());
                        Console.WriteLine("Child unit: parent count = {0}", childUnit.Parents.Count());
                        Console.WriteLine("Parent unit: children count = {0}", parentUnit.ChildUnits.Count());
            
                        //Deleting the business unit
                        domain.DeleteUnit(unitToDelete);
            
                        Console.WriteLine("Deleting the business unit");
            
                        Console.WriteLine("Current user: unit count = {0}", domain.CurrentUser.Units.Count());
                        Console.WriteLine("Child unit: parent count = {0}", childUnit.Parents.Count());
                        Console.WriteLine("Parent unit: children count = {0}", parentUnit.ChildUnits.Count());
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Domain.DeleteUnit(System.Guid)">
            <summary>
              Deletes a business unit with the specified id.
            </summary>
            <remarks>
              The current user has to have the permission to change security settings in order to execute this function.
            </remarks>
            <param name="unitId">The id of the business unit to be deleted.</param>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is no unit with such id.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following example shows how to delete the a business unit with the specified id.
            <code>
                using System;
                using Centido.Core;
            
                class DomainSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
            
                        domain.DeleteAll();
                        
                        //Creating a business unit that will be deleted
                        var unitToDelete = domain.AddUnit();
            
                        //Adding the current user into that unit
                        unitToDelete.AddUser(domain.CurrentUser);
            
                        //Creating a child business unit
                        var childUnit = domain.AddUnit();
                        childUnit.AddParent(unitToDelete);
            
                        //Creating a parent business unit
                        var parentUnit = domain.AddUnit();
                        unitToDelete.AddParent(parentUnit);
            
                        Console.WriteLine("Current user: unit count = {0}", domain.CurrentUser.Units.Count());
                        Console.WriteLine("Child unit: parent count = {0}", childUnit.Parents.Count());
                        Console.WriteLine("Parent unit: children count = {0}", parentUnit.ChildUnits.Count());
            
                        //Deleting the business unit
                        domain.DeleteUnit(unitToDelete.Id);
            
                        Console.WriteLine("Deleting the business unit");
            
                        Console.WriteLine("Current user: unit count = {0}", domain.CurrentUser.Units.Count());
                        Console.WriteLine("Child unit: parent count = {0}", childUnit.Parents.Count());
                        Console.WriteLine("Parent unit: children count = {0}", parentUnit.ChildUnits.Count());
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Domain.DeleteAllUnits">
            <summary>
              Deletes all business units.
            </summary>
            <remarks>
              The current user has to have the permission to change security settings in order to execute this function.
            </remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following example shows how to delete all business units.
            <code>
                using System;
                using Centido.Core;
            
                class DomainSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
            
                        domain.DeleteAll();
                        
                        //Creating two business units
                        domain.AddUnit();
                        domain.AddUnit();
            
                        Console.WriteLine("Business unit count = {0}", domain.Units.Count());
            
                        //Deleting all business units
                        domain.DeleteAllUnits();
            
                        Console.WriteLine("Business unit count = {0}", domain.Units.Count());
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Domain.AddRole(System.String)">
            <summary>
              Adds a new security role with the specified name.
            </summary>
            <remarks>
              <para>The current user has to have the permission to change security settings in order to execute this function.</para>
              <para>Note that security role name is always trimmed and lowered.</para>
            </remarks>
            <param name="roleName">The security role name.</param>
            <returns>Returns the newly created security role.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="roleName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="roleName"/> is an empty string.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when a security role or a user with the same name already exists.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following example shows how to create a new security role and add users into the role.
            <code>
                using System;
                using Centido.Core;
            
                class DomainSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
            
                        domain.DeleteAll();
                        
                        //Creating a new security role
                        var role = domain.AddRole("my_role");
                        role.DisplayName = "My new security role";
                        
                        //Adding the current user to the role
                        role.AddUser(domain.CurrentUser);
            
                        foreach(var r in domain.Roles)
                        {
                            Console.WriteLine("Role: name = {0}, display name = {1}",
                                r.Name, r.DisplayName);
            
                            foreach(var userInRole in r.Users)
                            {
                                Console.WriteLine("\tUser: name = {0}",
                                    userInRole.Name);
                            }
                        }
                    }
                }   
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Domain.GetRole(System.String)">
            <summary>
              Retrieves a security role with specified name.
            </summary>
            <remarks>
              The current user has to have the permission to change security settings in order to execute this function.
            </remarks>
            <param name="roleName">The name of the security role to be retrieved.</param>
            <returns>Returns security role with the specified name if there is one; otherwise returns null.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="roleName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="roleName"/> is an empty string.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following example shows how to get a security role with the specified name.
            <code>
                using System;
                using Centido.Core;
            
                class DomainSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
            
                        domain.DeleteAll();
                        
                        //Creating a new security role
                        var role = domain.AddRole("my_role");
                        role.DisplayName = "My new security role";
                        
                        //Getting that role by name
                        Console.WriteLine("Role: display name = {0}", role.DisplayName);
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Domain.DeleteRole(Centido.Core.Role)">
            <summary>
              Deletes the specified security role.
            </summary>
            <remarks>
              The current user has to have the permission to change security settings in order to execute this function.
            </remarks>
            <param name="role">The security role to be deleted.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="role"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is no role with such name.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following example shows how to delete the specified security role.
            <code>
                using System;
                using Centido.Core;
            
                class DomainSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
            
                        domain.DeleteAll();
            
                        //Creating a security role that will be deleted
                        var roleToDelete = domain.AddRole("my_role");
            
                        //Adding a user to that role
                        var user = domain.AddUser("my_user", "P@ssw0rd");
                        roleToDelete.AddUser(user);
            
                        //Creating a child role
                        var childRole = domain.AddRole("child_role");
                        roleToDelete.AddRole(childRole);
            
                        //Creating a parent role
                        var parentRole = domain.AddRole("parent_role");
                        parentRole.AddRole(roleToDelete);
            
                        Console.WriteLine("User: role count = {0}", user.Roles.Count());
                        Console.WriteLine("Child role: parent roles count = {0}", childRole.ParentRoles.Count());
                        Console.WriteLine("Parent role: child roles count = {0}", parentRole.ChildRoles.Count());
            
                        //Deleting the role
                        domain.DeleteRole(roleToDelete);
            
                        Console.WriteLine("Deleting the role");
            
                        Console.WriteLine("User: role count = {0}", user.Roles.Count());
                        Console.WriteLine("Child role: parent roles count = {0}", childRole.ParentRoles.Count());
                        Console.WriteLine("Parent role: child roles count = {0}", parentRole.ChildRoles.Count());
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Domain.DeleteRole(System.String)">
            <summary>
              Deleted a security role with the specified name.
            </summary>
            <remarks>
              The current user has to have the permission to change security settings in order to execute this function.
            </remarks>
            <param name="roleName">The name of the security role to be deleted.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="roleName"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is no role with such name.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following example shows how to delete a security role with the specified name.
            <code>
                using System;
                using Centido.Core;
            
                class DomainSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
            
                        domain.DeleteAll();
            
                        //Creating a security role that will be deleted
                        var roleToDelete = domain.AddRole("my_role");
            
                        //Adding a user to that role
                        var user = domain.AddUser("my_user", "P@ssw0rd");
                        roleToDelete.AddUser(user);
            
                        //Creating a child role
                        var childRole = domain.AddRole("child_role");
                        roleToDelete.AddRole(childRole);
            
                        //Creating a parent role
                        var parentRole = domain.AddRole("parent_role");
                        parentRole.AddRole(roleToDelete);
            
                        Console.WriteLine("User: role count = {0}", user.Roles.Count());
                        Console.WriteLine("Child role: parent roles count = {0}", childRole.ParentRoles.Count());
                        Console.WriteLine("Parent role: child roles count = {0}", parentRole.ChildRoles.Count());
            
                        //Deleting the role
                        domain.DeleteRole(roleToDelete.Name);
            
                        Console.WriteLine("Deleting the role");
            
                        Console.WriteLine("User: role count = {0}", user.Roles.Count());
                        Console.WriteLine("Child role: parent roles count = {0}", childRole.ParentRoles.Count());
                        Console.WriteLine("Parent role: child roles count = {0}", parentRole.ChildRoles.Count());
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Domain.DeleteAllRoles">
            <summary>
              Deletes all security roles.
            </summary>
            <remarks>
              The current user has to have the permission to change security settings in order to execute this function.
            </remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following example shows how to delete all security roles.
            <code>
                using System;
                using Centido.Core;
            
                class DomainSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
            
                        domain.DeleteAll();
                        
                        //Creating two security roles
                        domain.AddRole("first_role");
                        domain.AddRole("second_role");
            
                        Console.WriteLine("Role count = {0}", domain.Roles.Count());
            
                        //Deleting all security roles
                        domain.DeleteAllRoles();
            
                        Console.WriteLine("Role count = {0}", domain.Roles.Count());
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Domain.AddUser(System.String,System.String)">
            <summary>
              Adds a new user.
            </summary>
            <remarks>
              <para>The current user has to have the permission to change security settings in order to execute this function.</para>
              <para>Note that user name is always trimmed an lowered.</para>
            </remarks>
            <param name="userName">The name of the new user.</param>
            <param name="userPassword">The password of the new user.</param>
            <returns>Returns the newly created user.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="userName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="userName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="userPassword"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="userPassword"/> is an empty string.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when a user or a security role with the same name already exists.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the password doesn't meet database security policy requirements.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following example shows how to create a new user.
            <code>
                using System;
                using Centido.Core;
            
                class DomainSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
            
                        domain.DeleteAll();
                        
                        Console.WriteLine("The current user = {0}", domain.CurrentUser.Name);
                
                        //Creating a new user
                        var user = domain.AddUser("new_user", "P@ssw0rd");
            
                        //Logging on as a new user
                        var userDomain = domain.Logon("new_user", "P@ssw0rd");
            
                        Console.WriteLine("The current user = {0}", userDomain.CurrentUser.Name);
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Domain.GetUser(System.String)">
            <summary>
              Retrieves a user with the specified name.
            </summary>
            <param name="userName">The name of the user to be retrieved.</param>
            <returns>Returns a user with the specified name if there is one; otherwise returns null.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="userName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="userName"/> is an empty string.</exception>
            <example>
              The following example shows how get a user with the specified name.
            <code>
                using System;
                using Centido.Core;
            
                class DomainSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
            
                        domain.DeleteAll();
                        
                        //Creating a new user
                        var user = domain.AddUser("new_user", "P@ssw0rd");
                        user.DisplayName = "My new user";
                        
                        //Getting the user by name
                        Console.WriteLine("User: display name = {0}", domain.GetUser(user.Name).DisplayName);
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Domain.DeleteUser(Centido.Core.User)">
            <summary>
              Deletes the specified user.
            </summary>
            <remarks>
              The current user has to have the permission to change security settings in order to execute this function.
            </remarks>
            <param name="user">The user to be deleted.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="user"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is no user with such name.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to delete the current user.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the user to be deleted is currently logged on.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following example shows how to delete the specified user.
            <code>
                using System;
                using Centido.Core;
            
                class DomainSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
            
                        domain.DeleteAll();
            
                        //Creating a user
                        var user = domain.AddUser("my_user", "P@ssw0rd");
            
                        //Adding the user in a security role
                        var role = domain.AddRole("my_role");
                        role.AddUser(user);
            
                        //Adding the user in a business unit
                        var unit = domain.AddUnit();
                        unit.AddUser(user);
            
                        Console.WriteLine("Role: user count = {0}", role.Users.Count());
                        Console.WriteLine("Unit: user count = {0}", unit.Users.Count());
            
                        //Deleting the user
                        domain.DeleteUser(user);
            
                        Console.WriteLine("Deleting the user");
            
                        Console.WriteLine("Role: user count = {0}", role.Users.Count());
                        Console.WriteLine("Unit: user count = {0}", unit.Users.Count());
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Domain.DeleteUser(System.String)">
            <summary>
              Deletes a user with the specified name.
            </summary>
            <remarks>
              The current user has to have theh permission to change security settings in order to execute this function.
            </remarks>
            <param name="userName">The name of the user to be deleted.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="userName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="userName"/> is an empty string.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is no user with such name.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to delete the current user.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the user to be deleted is currently logged on.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
            The following example shows how to delete a user with the specified name.
            <code>
                using System;
                using Centido.Core;
            
                class DomainSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
            
                        domain.DeleteAll();
            
                        //Creating a user
                        var user = domain.AddUser("my_user", "P@ssw0rd");
            
                        //Adding the user in a security role
                        var role = domain.AddRole("my_role");
                        role.AddUser(user);
            
                        //Adding the user in a business unit
                        var unit = domain.AddUnit();
                        unit.AddUser(user);
            
                        Console.WriteLine("Role: user count = {0}", role.Users.Count());
                        Console.WriteLine("Unit: user count = {0}", unit.Users.Count());
            
                        //Deleting the user
                        domain.DeleteUser(user.Name);
            
                        Console.WriteLine("Deleting the user");
            
                        Console.WriteLine("Role: user count = {0}", role.Users.Count());
                        Console.WriteLine("Unit: user count = {0}", unit.Users.Count());
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Domain.DeleteAllUsers(System.Boolean)">
            <summary>
              Deletes all users.
            </summary>
            <remarks>
              <para>The current user has to have the permission to change security settings in order to execute this function.</para>
              <para>This function doesn't delete the currently logged on user and the users in the database
                that were not registered via the current API.</para>
              <para>Deleting all users without errors is not always possible. For instance, some of them
                might be logged on at the moment. That is why skipping errors allows to delete as many users as possible.
              </para>
            </remarks>
            <param name="skipOnErrors">When true, then errors occured while deleting users are skipped.</param>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following example shows how delete all users except the current one.
            <code>
                using System;
                using Centido.Core;
            
                class DomainSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
            
                        domain.DeleteAll();
            
                        //Creating two users
                        domain.AddUser("first_user", "P@ssw0rd");
                        domain.AddUser("second_user", "P@ssw0rd");
            
                        //Enumerating the users
                        foreach(var user in domain.Users)
                            Console.WriteLine("User: name = {0}", user.Name);
            
                        //Deleting all users
                        domain.DeleteAllUsers();
            
                        Console.WriteLine("Deleting all users");
            
                        //Enumerating the users
                        foreach(var user in domain.Users)
                            Console.WriteLine("User: name = {0}", user.Name);
                    }
                }   
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Domain.GetPrincipal(System.String)">
            <summary>
              Retrieves a security principal with the specified name.
            </summary>
            <remarks>
              The current user has to have the permission to change security settings in order to execute this function.
            </remarks>
            <param name="principalName">The name of the principal to be retrieved.</param>
            <returns>Returns a security principal with the specified name if there is one; otherwise returns null</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="principalName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="principalName"/> is an empty string.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following example shows how to get a security principal by name.  
            <code>
                using System;
                using Centido.Core;
            
                class DomainSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
            
                        domain.DeleteAll();
            
                        //Creating a user
                        var user = domain.AddUser("my_user", "P@ssw0rd");
                        user.DisplayName = "My new user";
            
                        //Creating a role
                        var role = domain.AddRole("my_role");
                        role.DisplayName = "My new role";
            
                        //Getting security principals by their names
                        Console.WriteLine("User: name = {0}", domain.GetPrincipal(user.Name).DisplayName);
                        Console.WriteLine("Role: name = {0}", domain.GetPrincipal(role.Name).DisplayName);
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Domain.DeleteAll(System.Boolean)">
            <summary>
              Deletes all domain content.
            </summary>
            <remarks>
              <para>The function deletes all user-defined tables, business units, security roles and users except the current user.</para>
              <para>Deleting all the domain content without errors is not always possible. For instance, some of the users
                might be logged on at the moment. That is why skipping errors allows to delete as much content as possible.
              </para>
              <para>The current user has to have the permission to change security settings and permission to change the schema
                in order to execute this function.</para>
            </remarks>
            <param name="skipOnErrors">When true, then errors occured while deleting the content are skipped.</param>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following example shows how to delete all domain content.
            <code>
                using System;
                using Centido.Core;
            
                class DomainSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
            
                        domain.DeleteAll();
            
                        //Creating two tables
                        domain.AddTable("first_table");
                        domain.AddTable("second_table");
            
                        //Creating two users
                        domain.AddUser("first_user", "P@ssw0rd");
                        domain.AddUser("second_user", "P@ssw0rd");
            
                        //Creating two business units
                        domain.AddUnit();
                        domain.AddUnit();
            
                        //Creating two roles
                        domain.AddRole("first_role");
                        domain.AddRole("second_role");
            
                        Console.WriteLine("Table count = {0}", domain.Tables.Count());
                        Console.WriteLine("User count = {0}", domain.Users.Count());
                        Console.WriteLine("Unit count = {0}", domain.Units.Count());
                        Console.WriteLine("Role count = {0}", domain.Roles.Count());
            
                        //Deleting all domain content
                        domain.DeleteAll();
            
                        Console.WriteLine("Deleting domain content");
            
                        Console.WriteLine("Table count = {0}", domain.Tables.Count());
                        Console.WriteLine("User count = {0}", domain.Users.Count());
                        Console.WriteLine("Unit count = {0}", domain.Units.Count());
                        Console.WriteLine("Role count = {0}", domain.Roles.Count());
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.Domain.Logon(System.String,System.String)">
            <summary>
              Creates a new instance of <see cref="T:Centido.Core.Domain"/> logging on as a different user.
            </summary>
            <remarks>
            <para>
              A new connection string is built upon the old one by changing only the user name and the password.
              That is why there should be a registered connection string builder (parser) for the current database provider name.
            </para>
            <para>The user name is lowered and trimmed when used to connect to the database.</para>
            </remarks>
            <param name="userName">The name of the user to be logged on.</param>
            <param name="userPassword">The password of the user to be logged on.</param>
            <returns>Returns a domain created using the specified user credentials.</returns>
            <exception cref="T:System.ArgumentException">Thrown when no connection string builder (parser) is registered for the current database provider name.</exception>
            <example>
              The following example shows how to logon as a different user using the current user domain.
              <code>
                using System;
                using Centido.Core;
            
                class LogonSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                    
                        //Showing the current user name
                        Console.WriteLine(domain.CurrentUser.Name);
                    
                        //Adding a new user
                        var table = domain.AddUser("my_user", "P@ssw0rd");
                    
                        //Logging on as a new user
                        var userDomain = domain.Logon("my_user", "P@ssw0rd");
                    
                        //Showing the current user name
                        Console.WriteLine(userDomain.CurrentUser.Name);
                    }
                }   
              </code>
            </example>
        </member>
        <member name="M:Centido.Core.Domain.Refresh">
            <summary>
              Refreshes the object fields.
            </summary>
        </member>
        <member name="P:Centido.Core.Domain.Name">
            <summary>
              Gets the domain name.
            </summary>
            <remarks>
              Domain name is used when loading domain configuration parameters from an xml file.
            </remarks>
        </member>
        <member name="P:Centido.Core.Domain.DbProviderName">
            <summary>
              Gets the ADO.NET provider invariant name used to create an instance of the <see cref="T:System.Data.Common.DbProviderFactory"/> class.
            </summary>
            <remarks>
              The value of this property is taken from an instance of the <see cref="T:Centido.Core.DomainConfiguration"/>
              class during the initialization.
            </remarks>
        </member>
        <member name="P:Centido.Core.Domain.DbAccess">
            <summary>
              Gets an instance of the <see cref="T:Centido.Core.DbAccess"/> class which serves as
              a database access helper used to ease the execution of ADO.NET commands.
            </summary>
            <example>
              The folowing code uses an instance of the <see cref="T:Centido.Core.DbAccess"/> class
              when reading a list of table rows.
              <code>
                using System;
                using Centido.Core;
            
                class DbAccessSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                    
                        //Adding a new table
                        var table = domain.AddTable("my_table");
                    
                        //Granting all necessary permissions
                        table.GrantAll();
            
                        //Inserting two rows
                        table.InsertRow();
                        table.InsertRow();
                    
                        //Reading inserted row ids using the DbAccess helper
                        domain.DbAccess.ExecuteReader(cmd =&gt;
                        {
                            cmd.CommandText = string.Format("select id from {0}", table.FullName);
                        },
                        reader =&gt;
                        {
                            Console.WriteLine(DbValue.GetGuid(reader[0]));
                        });             
                    }
                }    
              </code>
            </example>
        </member>
        <member name="P:Centido.Core.Domain.Dbms">
            <summary>
              Gets an instance of the <see cref="T:Centido.Core.DbmsInfo"/> class which provides
              a description of the database and the installed metadata.
            </summary>
            <example>
              The following example shows ho to get information about the current database management system.
            <code>
                using System;
                using Centido.Core;
            
                class DbAccessSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        Console.WriteLine("Product: name = {0}, version = {1}", 
                            domain.Dbms.ProductName, domain.Dbms.ProductVersion);
                        Console.WriteLine("Supports column renaming = {0}", domain.Dbms.ColumnRenaming);
                        Console.WriteLine("Supports regular expressions = {0}", domain.Dbms.RegularExpressions);
                    }
                }   
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.Domain.DbSchemaName">
            <summary>
              Gets the schema name used to build qualified object names when connecting to the target database.
            </summary>
            <remarks>
              The value of this property is taken from an instance of the <see cref="T:Centido.Core.DomainConfiguration"/>
              class during the initialization.
            </remarks>
        </member>
        <member name="P:Centido.Core.Domain.DbName">
            <summary>
              Gets the current database name.
            </summary>
        </member>
        <member name="P:Centido.Core.Domain.RecycleBin">
            <summary>
              Gets or sets the availability of the recycle bin.
            </summary>
            <remarks>
            <para>Disabling the recycle bin results in "reappearing" of those rows
            that were previously soft-deleted. If a row is deleted issuing an sql delete command when
            the recycle bin is turned off then that row is deleted permanently.</para>
            <para>The current user has to have the permission to change the schema in order to set this
            property.</para>
            </remarks>
            <value>True if the recycle bin is turned on; otherwise, false.</value>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission
            to set this property.</exception>
            <example>
              The following example shows how to turn the recycle bin off.
            <code>
                using System;
                using Centido.Core;
            
                class DomainSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
            
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
            
                        // Turning the recycle bin on
                        domain.RecycleBin = true;
            
                        //Inserting and deleting a row
                        var id = table.InsertRow();
                        table.DeleteRow(id);
                        
                        Console.WriteLine("Row count = {0}", table.RowCount);
                        Console.WriteLine("Internal row count = {0}", table.InternalRowCount);
            
                        Console.WriteLine("Turning the recycle bin off");
            
                        domain.RecycleBin = false;
            
                        Console.WriteLine("Row count = {0}", table.RowCount);
                        Console.WriteLine("Internal row count = {0}", table.InternalRowCount);
            
                        Console.WriteLine("Deleting the row permanently");
            
                        table.DeleteRow(id);
            
                        Console.WriteLine("Row count = {0}", table.RowCount);
                        Console.WriteLine("Internal row count = {0}", table.InternalRowCount);
                    }     
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.Domain.Tables">
            <summary>
              Gets a list of user-defined database tables.
            </summary>
            <example>
              The following example shows how to enumerate all user-defined tables.
            <code>
                using System;
                using Centido.Core;
            
                class DomainSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
            
                        //Creating two user-defined tables
                        var firstTable = domain.AddTable("first_table");
                        firstTable.DisplayName = "The first table";
            
                        var secondTable = domain.AddTable("second_table");
                        secondTable.DisplayName = "The second table";
            
                        //Enumerating all user-defined tables
                        foreach(var table in domain.Tables)
                        {
                            Console.WriteLine("Table: name = {0}, display name = {1}",
                                table.Name, table.DisplayName);
                        }
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.Domain.Units">
            <summary>
              Gets a list of all business units.
            </summary>
            <example>
              The following example shows how to enumerate all business units in the domain.
            <code>
                using System;
                using Centido.Core;
            
                class DomainSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating two business units
                        domain.AddUnit().DisplayName = "The first unit";
                        domain.AddUnit().DisplayName = "The second unit";
            
                        //Enumerating the domain business units
                        foreach(var unit in domain.Units)
                        {
                            Console.WriteLine("Business unit: id = {0}, display name = {1}",
                                unit.Id, unit.DisplayName);
                        }
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.Domain.Roles">
            <summary>
              Gets all security roles.
            </summary>
            <remarks>
              The current user has to have the permission to change security settings in order to execute this function.
            </remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following example shows how to enumerate all domain security roles.
            <code>
                using System;
                using Centido.Core;
            
                class DomainSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating two security roles
                        domain.AddRole("first_role").DisplayName = "The first role";
                        domain.AddRole("second_role").DisplayName = "The second role";
            
                        //Enumerating domain security roles
                        foreach(var role in domain.Roles)
                        {
                            Console.WriteLine("Role: name = {0}, display name = {1}",
                                role.Name, role.DisplayName);
                        }
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.Domain.Users">
            <summary>
              Gets all users.
            </summary>
            <example>
              The following example shows how enumerate all domain users.
            <code>
                using System;
                using Centido.Core;
            
                class DomainSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating two new users
                        domain.AddUser("first_user", "P@ssw0rd").DisplayName = "The first user";
                        domain.AddUser("second_user", "P@ssw0rd").DisplayName = "The second user";
            
                        //Enumerating all domain users
                        foreach(var user in domain.Users)
                        {
                            Console.WriteLine("User: name = {0}, display name = {1}",
                                user.Name, user.DisplayName);
                        }
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.Domain.CurrentUser">
            <summary>
              Gets an instance of the <see cref="T:Centido.Core.CurrentUser"/> class that represents the currently logged on user.
            </summary>
            <example>
              The following example shows how to check the current user permissions.
            <code>
                using System;
                using Centido.Core;
            
                class DomainSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Checking the insert permission of the current user
                        if (!domain.CurrentUser.CanDo(table, DataAction.Insert))
                            Console.WriteLine("Current user has no insert permission");
            
                        //Granting the insert permission to the current user
                        table.Grant(DataAction.Insert);
            
                        //Checking the insert permission of the current user
                        if (domain.CurrentUser.CanDo(table, DataAction.Insert))
                            Console.WriteLine("Current user has the insert permission");
            
                        table.InsertRow();
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.Domain.Principals">
            <summary>
              Gets all security principals.
            </summary>
            <remarks>
              The current user has to have the permission to change security settings in order to execute this function.
            </remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <example>
              The following example shows how to enumerate all domain security principals.
            <code>
                using System;
                using Centido.Core;
            
                class DomainSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a new user
                        domain.AddUser("new_user", "P@ssw0rd");
            
                        //Creating a new security role
                        domain.AddRole("new_role");
            
                        //Enumerating all security principals
                        foreach(var principal in domain.Principals)
                        {
                            Console.WriteLine("Principal: name = {0}", principal.Name);
                        }
                    }
                }
            </code>
            </example>
        </member>
        <member name="T:Centido.Core.Dto.RefColumnDto">
            <summary>
              A data transfering object for a reference table column.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.RefColumnDto.XmlTag">
            <summary>
              The name of the xml tag that is used to store this object.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.RefColumnDto.CurrentXmlSchemaVersion">
            <summary>
              The current xml schema version.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.RefColumnDto.IdTag">
            <summary>
              The name of the xml tag that is used to store a column id.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.RefColumnDto.NameTag">
            <summary>
              The name of the xml tag that is used to store a column name.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.RefColumnDto.DisplayNameTag">
            <summary>
              The name of the xml tag that is used to store a column display name.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.RefColumnDto.DescriptionTag">
            <summary>
              The name of the xml tag that is used to store a column description.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.RefColumnDto.OrderIndexTag">
            <summary>
              The name of the xml tag that is used to store a column order index.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.RefColumnDto.IsNotNullTag">
            <summary>
              The name of the xml tag that is used to store a column nullability.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.RefColumnDto.DefaultValueTag">
            <summary>
              The name of the xml tag that is used to store a column default value.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.RefColumnDto.ReferenceCheckingTag">
            <summary>
              The name of the tag that is used to store the need for reference checking.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.RefColumnDto.TargetListTag">
            <summary>
              The name of the tag that is used to store the reference target list.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.RefColumnDto._refTargets">
            <summary>
              The list reference column targets.
            </summary>
        </member>
        <member name="M:Centido.Core.Dto.RefColumnDto.AddTarget(Centido.Core.Dto.RefTargetDto)">
            <summary>
              Adds the specified reference target to the column reference target list.
            </summary>
            <param name="refTargetDto">The reference target to be added.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="refTargetDto"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.RefColumnDto.DeleteTarget(Centido.Core.Dto.RefTargetDto)">
            <summary>
              Removes the specified reference target from the column reference target list.
            </summary>
            <param name="refTargetDto">The reference target to be deleted.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="refTargetDto"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.RefColumnDto.GetSchema">
            <summary>
              This method is reserved and should not be used. When implementing the IXmlSerializable interface, you should return null (Nothing in Visual Basic) from this method, and instead, if specifying a custom schema is required, apply the <see cref="T:System.Xml.Serialization.XmlSchemaProviderAttribute"/> to the class.
            </summary>
            <returns>
              An <see cref="T:System.Xml.Schema.XmlSchema"/> that describes the XML representation of the object that is produced by the <see cref="M:System.Xml.Serialization.IXmlSerializable.WriteXml(System.Xml.XmlWriter)"/> method and consumed by the <see cref="M:System.Xml.Serialization.IXmlSerializable.ReadXml(System.Xml.XmlReader)"/> method.
            </returns>
        </member>
        <member name="M:Centido.Core.Dto.RefColumnDto.ReadXml(System.Xml.XmlReader)">
            <summary>
              Generates an object from its XML representation.
            </summary>
            <param name="reader">The <see cref="T:System.Xml.XmlReader"/> stream from which the object is deserialized. 
            </param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="reader"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.RefColumnDto.WriteXml(System.Xml.XmlWriter)">
            <summary>
              Converts an object into its XML representation.
            </summary>
            <param name="writer">The <see cref="T:System.Xml.XmlWriter"/> stream to which the object is serialized. 
            </param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="writer"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.RefColumnDto.CopyTo(Centido.Core.RefColumn)">
            <summary>
              Copies the properties of the data transfer object to the
            specified reference column.
            </summary>
            <param name="refColumn">The reference column.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="refColumn"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.RefColumnDto.CreateFrom(Centido.Core.RefColumn)">
            <summary>
              Creates a data transfer object for the specified reference column.
            </summary>
            <param name="refColumn">The specified reference column.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="refColumn"/> is null.</exception>
            <returns>Returns the data transfer object for the specified reference column.</returns>
        </member>
        <member name="P:Centido.Core.Dto.RefColumnDto.DefaultValue">
            <summary>
              Gets or sets the column default value.
            </summary>
        </member>
        <member name="P:Centido.Core.Dto.RefColumnDto.ReferenceChecking">
            <summary>
              Gets or sets the need for reference checking.
            </summary>
        </member>
        <member name="P:Centido.Core.Dto.RefColumnDto.Targets">
            <summary>
              Gets the column reference targets.
            </summary>
        </member>
        <member name="T:Centido.Core.Dto.IndexDto">
            <summary>
              A data transfering object for a table index.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.IndexDto.XmlTag">
            <summary>
              The name of the xml tag that is used to store this object.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.IndexDto.CurrentXmlSchemaVersion">
            <summary>
              The current xml schema version.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.IndexDto.IdTag">
            <summary>
              The name of the xml tag to store the index id.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.IndexDto.IsUniqueTag">
            <summary>
              The name of the xml tag to store the index uniqueness.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.IndexDto.ColumnListTag">
            <summary>
              The name of the tag to store the column list.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.IndexDto.ColumnTag">
            <summary>
              The name of the tag to store the index column.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.IndexDto.ColumnIdTag">
            <summary>
              The name of the tag to store the column id.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.IndexDto._columnIdList">
            <summary>
              The indexed columns id list.
            </summary>
        </member>
        <member name="M:Centido.Core.Dto.IndexDto.AddColumn(System.Guid)">
            <summary>
              Adds the column to the indexed columns list.
            </summary>
            <param name="columnId">The id of the column to be added.</param>
        </member>
        <member name="M:Centido.Core.Dto.IndexDto.DeleteColumn(System.Guid)">
            <summary>
              Deletes the column from the indexed column list.
            </summary>
            <param name="columnId">The id of the column to be deleted.</param>
        </member>
        <member name="M:Centido.Core.Dto.IndexDto.GetSchema">
            <summary>
              This method is reserved and should not be used. When implementing the IXmlSerializable interface, you should return null (Nothing in Visual Basic) from this method, and instead, if specifying a custom schema is required, apply the <see cref="T:System.Xml.Serialization.XmlSchemaProviderAttribute"/> to the class.
            </summary>
            <returns>
              An <see cref="T:System.Xml.Schema.XmlSchema"/> that describes the XML representation of the object that is produced by the <see cref="M:System.Xml.Serialization.IXmlSerializable.WriteXml(System.Xml.XmlWriter)"/> method and consumed by the <see cref="M:System.Xml.Serialization.IXmlSerializable.ReadXml(System.Xml.XmlReader)"/> method.
            </returns>
        </member>
        <member name="M:Centido.Core.Dto.IndexDto.ReadXml(System.Xml.XmlReader)">
            <summary>
              Generates an object from its XML representation.
            </summary>
            <param name="reader">The <see cref="T:System.Xml.XmlReader"/> stream from which the object is deserialized. 
            </param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="reader"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.IndexDto.WriteXml(System.Xml.XmlWriter)">
            <summary>
              Converts an object into its XML representation.
            </summary>
            <param name="writer">The <see cref="T:System.Xml.XmlWriter"/> stream to which the object is serialized. 
            </param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="writer"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.IndexDto.CreateFrom(Centido.Core.Index)">
            <summary>
              Creates a data transfer object for the specified index.
            </summary>
            <param name="index">The specified index.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="index"/> is null.</exception>
            <returns>Returns the data transfer object for the specified index.</returns>
        </member>
        <member name="P:Centido.Core.Dto.IndexDto.Id">
            <summary>
              Gets or sets the the index id.
            </summary>
        </member>
        <member name="P:Centido.Core.Dto.IndexDto.IsUnique">
            <summary>
              Gets or sets the index uniqueness.
            </summary>
        </member>
        <member name="P:Centido.Core.Dto.IndexDto.ColumnIds">
            <summary>
              Gets the indexed columns ids.
            </summary>
        </member>
        <member name="T:Centido.Core.RefColumn">
            <summary>
              A reference table column.
            </summary>
            <remarks>A reference column can point to many tables.
            A reference target is created for each of those tables and stores
            additional information such as the need for cascade delete, the
            table back display name etc. The column is allowed to contain
            only the value that correspond to the ids of the rows in the tables
            that are listed as reference targets. The column can have a default value.</remarks>
            <example>
              The following example shows how to use a reference column.
            <code>
                using System;
                using System.Data.Common;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Adding two tables
                        var firstTable = domain.AddTable("first_table");
                        var secondTable = domain.AddTable("second_table");
            
                        firstTable.GrantAll();
                        secondTable.GrantAll();
                        
                        //Creating a reference column
                        var column = firstTable.AddColumn("ref_column", ColumnType.Reference)
                            as RefColumn;
            
                        //Adding reference targets
                        column.AddTarget(firstTable).CascadeDelete = true; //This is a self-reference
                        column.AddTarget(secondTable).CascadeDelete = true;  
            
                        //Inserting some rows
                        var secondTableRowId = secondTable.InsertRow();
                        var firstTableRowId = firstTable.InsertRow(column.Value(secondTableRowId));
                        firstTable.InsertRow(column.Value(firstTableRowId)); //This is a self-reference
            
                        //Trying to insert an invalid value
                        try
                        {
                            firstTable.InsertRow(column.Value(Guid.NewGuid()));
                        }
                        catch(DbException)
                        {
                            Console.WriteLine("Inserting an invalid value is forbidden");
                        }
            
                        Console.WriteLine("The first table: row count = {0}", firstTable.RowCount);
                        Console.WriteLine("The second table: row count = {0}", secondTable.RowCount);
            
                        Console.WriteLine("Deleting the first row in the chain of rows");
            
                        secondTable.DeleteRow(secondTableRowId);
            
                        Console.WriteLine("The first table: row count = {0}", firstTable.RowCount);
                        Console.WriteLine("The second table: row count = {0}", secondTable.RowCount);
                    }
                }
            </code>
            </example>
        </member>
        <member name="F:Centido.Core.RefColumn._defaultValue">
            <summary>
              The default value of the column.
            </summary>
        </member>
        <member name="M:Centido.Core.RefColumn.#ctor(System.Guid,Centido.Core.Table)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.RefColumn"/> class
              for the specified column id and parent table.
            </summary>
            <param name="columnId">The column id.</param>
            <param name="table">The parent table.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.RefColumn.#ctor(System.Guid,Centido.Core.Table,System.String,System.String,System.String,System.Boolean,System.Int32,System.Int32)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.RefColumn"/> class
              for the specified column id, name, display name,
            description, nullability, order index, customization level and parent table.
            </summary>
            <param name="columnId">The column id.</param>
            <param name="table">The parent table.</param>
            <param name="columnName">The column name.</param>
            <param name="displayName">The column display name.</param>
            <param name="description">The column description.</param>
            <param name="isNotNull">The column ability to hold null values.</param>
            <param name="orderIndex">The column order index.</param>
            <param name="customizationlevel">The column customization level.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
        </member>
        <member name="M:Centido.Core.RefColumn.GetTarget(Centido.Core.Table)">
            <summary>
              Retrives a reference target that points to the specified table.
            </summary>
            <param name = "referencedTable">The specified table.</param>
            <returns>Returns a reference target that points to the specified table if the one exists;
            otherwise, returns null.</returns>
            <example>
              The following example shows how to get a reference target by the
            table it points to.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Adding two tables
                        var firstTable = domain.AddTable("first_table");
                        var secondTable = domain.AddTable("second_table");
                        firstTable.GrantAll();
                        secondTable.GrantAll();
                        
                        //Creating a reference column
                        var column = firstTable.AddColumn("ref_column", ColumnType.Reference)
                            as RefColumn;
            
                        //Adding a reference target that points to the second table
                        column.AddTarget(secondTable).BackDisplayName = "The reference from the first table to the second table";
            
                        //Adding a reference target that points to the first table
                        column.AddTarget(firstTable).BackDisplayName = "The reference from the first table to itself.";
            
                        Console.WriteLine("Target: {0}", column.GetTarget(firstTable).BackDisplayName);
                        Console.WriteLine("Target: {0}", column.GetTarget(secondTable).BackDisplayName);
                    }
                }   
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.RefColumn.AddTarget(Centido.Core.Table)">
            <summary>
              Adds a new reference target.
            </summary>
            <remarks>
            <para>A reference target can point to the same table that contains
            the refenence column itself.</para>
            <para>The current user has to have the permission to change the schema in order to execute this function.</para>
            </remarks>
            <param name="referencedTable">The referenced table of the new target.</param>
            <returns>Returns the newly created reference target.</returns>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="referencedTable"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is already a reference target that points to the same table.</exception>
            <example>
              The following example shows how to add reference targets.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Adding two tables
                        var firstTable = domain.AddTable("first_table");
                        var secondTable = domain.AddTable("second_table");
                        firstTable.GrantAll();
                        secondTable.GrantAll();
                        
                        //Creating a reference column
                        var column = firstTable.AddColumn("ref_column", ColumnType.Reference)
                            as RefColumn;
            
                        //Adding a reference target that points to the second table
                        column.AddTarget(secondTable).CascadeDelete = true;
            
                        //Adding a reference target that points to the first table
                        column.AddTarget(firstTable).CascadeDelete = true;
            
                        //Inserting a row into the second table
                        var secondTableRowId = secondTable.InsertRow();
            
                        //Inserting a row into the first table
                        var firstTableRowId = firstTable.InsertRow(column.Value(secondTableRowId));
            
                        //Inserting another row that references the previous one
                        firstTable.InsertRow(column.Value(firstTableRowId));
            
                        Console.WriteLine("The first table: row count = {0}", firstTable.RowCount);
                        Console.WriteLine("The second table: row count = {0}", secondTable.RowCount);
            
                        //Deleting the last row
                        Console.WriteLine("Deleting the first row");
            
                        secondTable.DeleteRow(secondTableRowId);
                        
                        Console.WriteLine("The first table: row count = {0}", firstTable.RowCount);
                        Console.WriteLine("The second table: row count = {0}", secondTable.RowCount);
                    }
                }   
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.RefColumn.DeleteTarget(Centido.Core.RefTarget)">
            <summary>
              Deletes the specified reference target.
            </summary>
            <remarks>
            <para>Deleting a reference target results in setting the column to null for those rows that contain
            references on the target to be deleted.</para>
            <para>The currrent user has to have the permission to change the schema in order to execute this function.</para>
            </remarks>
            <param name="refTarget">The specified reference target.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="refTarget"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is no such reference target.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the column is not nullable and there are rows that contain
            references on the target to be deleted.</exception>
            <example>
              The following example shows how to delete a reference target.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Adding two tables
                        var firstTable = domain.AddTable("first_table");
                        var secondTable = domain.AddTable("second_table");
                        firstTable.GrantAll();
                        secondTable.GrantAll();
                        
                        //Creating a reference column
                        var column = firstTable.AddColumn("ref_column", ColumnType.Reference)
                            as RefColumn;
            
                        //Adding a reference target
                        var target = column.AddTarget(secondTable);
            
                        //Inserting a row into the second table
                        var secondTableRowId = secondTable.InsertRow();
            
                        //Inserting a row into the first table
                        var firstTableRowId = firstTable.InsertRow(column.Value(secondTableRowId));
            
                        //Reading the reference
                        Console.WriteLine("Reference: value = {0}", column.Read(firstTableRowId).GetGuid());
            
                        //Deleting the reference target
                        Console.WriteLine("Deleting the reference target");
            
                        column.DeleteTarget(target);
            
                        //Reading the reference
                        Console.WriteLine("Reference: value = {0}", column.Read(firstTableRowId).GetGuid());
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.RefColumn.DeleteTarget(Centido.Core.Table)">
            <summary>
              Deletes a reference target to the specified table.
            </summary>
            <remarks>
            <para>Deleting a reference target results in setting the column to null for those rows that contain
            references on the target to be deleted.</para>
            <para>The currrent user has to have the permission to change the schema in order to execute this function.</para>
            </remarks>
            <param name="referencedTable">The specified table.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="referencedTable"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is no such reference target.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when the column is not nullable and there are rows that contain
            references on the target to be deleted.</exception>
            <example>
              The following example shows how to delete a reference target.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Adding two tables
                        var firstTable = domain.AddTable("first_table");
                        var secondTable = domain.AddTable("second_table");
                        firstTable.GrantAll();
                        secondTable.GrantAll();
                        
                        //Creating a reference column
                        var column = firstTable.AddColumn("ref_column", ColumnType.Reference)
                            as RefColumn;
            
                        //Adding a reference target
                        column.AddTarget(secondTable);
            
                        //Inserting a row into the second table
                        var secondTableRowId = secondTable.InsertRow();
            
                        //Inserting a row into the first table
                        var firstTableRowId = firstTable.InsertRow(column.Value(secondTableRowId));
            
                        //Reading the reference
                        Console.WriteLine("Reference: value = {0}", column.Read(firstTableRowId).GetGuid());
            
                        //Deleting the reference target
                        Console.WriteLine("Deleting the reference target");
            
                        column.DeleteTarget(secondTable);
            
                        //Reading the reference
                        Console.WriteLine("Reference: value = {0}", column.Read(firstTableRowId).GetGuid());
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.RefColumn.Value(System.Object)">
            <summary>
              Creates a column value.
            </summary>
            <remarks>This method is used when inserting table rows.</remarks>
            <param name = "columnValue">The value of the column.</param>
            <returns>Returns the column value.</returns>
            <example>
              The following example shows how to insert into a reference column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Adding two tables
                        var firstTable = domain.AddTable("first_table");
                        var secondTable = domain.AddTable("second_table");
                        firstTable.GrantAll();
                        secondTable.GrantAll();
                        
                        //Creating a reference column
                        var column = firstTable.AddColumn("ref_column", ColumnType.Reference)
                            as RefColumn;
            
                        //Adding a reference target
                        column.AddTarget(secondTable);
            
                        //Inserting a row into the second table
                        var id = secondTable.InsertRow();
            
                        //Inserting a row into the first table
                        firstTable.InsertRow(column.Value(id)); 
                    }
                }   
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.RefColumn.PrepareForRemoving">
            <summary>
              Prepares the column for removing.
            </summary>
        </member>
        <member name="M:Centido.Core.RefColumn.Refresh">
            <summary>
             Refreshes the properties of the column.
            </summary>
        </member>
        <member name="M:Centido.Core.RefColumn.Add(Centido.Core.Table,System.String)">
            <summary>
              Adds a new reference column with the specified name to the specified table.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to execute this function.</remarks>
            <param name="table">The table.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is a column with the same name in the same user-defined table.</exception>
            <returns>Returns the newly created reference table column.</returns>
            <example>
              The following example shows how to add a reference column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a reference table column
                        var column = RefColumn.Add(table, "my_column");
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.RefColumn.Add(Centido.Core.Table,System.Guid,System.String)">
            <summary>
              Adds a new reference table column with the specified id and name to the specified table.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to execute this function.</remarks>
            <param name="table">The table.</param>
            <param name="columnId">The column id.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is a column with the same id or the same name in the same user-defined table.</exception>
            <returns>Returns the newly created reference table column.</returns>
            <example>
              The following example shows how to create a reference table column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a reference table column
                        var column = RefColumn.Add(table, Guid.NewGuid(), "my_column");
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.RefColumn.Ensure(Centido.Core.Table,System.String)">
            <summary>
              Ensures that the table contains a reference column with the specified name.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to execute this function.</remarks>
            <param name="table">The table.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to add a column and
            the current user has no permission to change the schema.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the 
            specified name but different column type.</exception>
            <returns>Returns a reference table column with the specified name.</returns>
            <example>
              The following example shows how to ensure that a table has a reference column with the specified name.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a reference table column
                        table.AddColumn("first_column", ColumnType.Reference);
            
                        //Ensuring the first column
                        RefColumn.Ensure(table, "first_column");
                        //Ensuring the second column
                        RefColumn.Ensure(table, "second_column");
            
                        foreach(var column in table.Columns)
                            Console.WriteLine("Table column: name = {0}, type = {1}", column.Name, column.ColumnType);
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.RefColumn.Ensure(Centido.Core.Table,System.Guid,System.String)">
            <summary>
              Ensures that the table contains a reference column with the specified id and the specified name.
            </summary>
            <param name="table">The table.</param>
            <param name="columnId">The column id.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to add a column and
            the current user has no permission to change the schema.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the
            specified id but different column name.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the 
            specified id but different column type.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the specified name
            but different column id.</exception>
            <returns>Returns the table column with the specified id, the specified name and the specified type.</returns>
            <returns>Returns the table column with the specified id, the specified name and the specified type.</returns>
            <example>
              The following example shows how to ensure a reference column with the specified id and
            the specified name.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a table column
                        var columnId = Guid.NewGuid();
                        table.AddColumn(columnId, "first_column", ColumnType.Reference);
            
                        //Ensuring the first column
                        RefColumn.Ensure(table, columnId, "first_column");
                        //Ensuring the second column
                        RefColumn.Ensure(table, Guid.NewGuid(), "second_column");
            
                        foreach(var column in table.Columns)
                            Console.WriteLine("Table column: name = {0}, type = {1}", column.Name, column.ColumnType);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.RefColumn.ColumnType">
            <summary>
              Gets the column type.
            </summary>
        </member>
        <member name="P:Centido.Core.RefColumn.ValueOdbcType">
            <summary>
              Gets the column value database type.
            </summary>
        </member>
        <member name="P:Centido.Core.RefColumn.Targets">
            <summary>
              Gets the reference targets of the column.
            </summary>
            <example>
              The following example shows how to enumerate the reference column targets.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Adding three tables
                        var firstTable = domain.AddTable("first_table");
                        var secondTable = domain.AddTable("second_table");
                        var thirdTable = domain.AddTable("third_table");
                        
                        //Creating a reference column
                        var column = firstTable.AddColumn("ref_column", ColumnType.Reference)
                            as RefColumn;
            
                        //Adding reference targets
                        column.AddTarget(firstTable);
                        column.AddTarget(secondTable);  
                        column.AddTarget(thirdTable);
            
                        //Enumerating reference targets
                        foreach(var t in column.Targets)
                            Console.WriteLine("Reference target: table = {0}", t.RefTable.Name);
                    }
                }   
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.RefColumn.BackEndTableName">
            <summary>
              Gets the backend table name.
            </summary>
        </member>
        <member name="P:Centido.Core.RefColumn.DefaultValue">
            <summary>
              Gets or sets the default value of the column.
            </summary>
            <remarks>
            <para>The default value needs to be a valid value that is
            it should correspond to a id of a row in a table that is marked as a reference target.</para>
            <para>The current user has to have the permission to change the schema in order to set this property.</para></remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to set this property.</exception>
            <example>
              The following example shows how to set the default value of a reference column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Adding two tables
                        var firstTable = domain.AddTable("first_table");
                        var secondTable = domain.AddTable("second_table");
                        firstTable.GrantAll();
                        secondTable.GrantAll();
                        
                        //Creating a reference column
                        var column = firstTable.AddColumn("ref_column", ColumnType.Reference)
                            as RefColumn;
            
                        //Adding a reference target that points to the second table
                        column.AddTarget(secondTable);
                    
                        //Creating a row in the second table
                        var secondTableRowId = secondTable.InsertRow();
            
                        //Setting the default column value
                        column.DefaultValue = secondTableRowId;
            
                        //Inserting a row in the first table
                        var firstTableRowId = firstTable.InsertRow();
            
                        Console.WriteLine("Reference column: value = {0}",
                            column.Read(firstTableRowId).GetGuid());
                    }
                }   
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.RefColumn.ReferenceChecking">
            <summary>
              Enables of disables the trigger that checks reference values in the column.
            </summary>
            <remarks>
            <para>By default the trigger is enabled and reference values are checked.
            Disabling reference checking is useful when trying to insert large volumes of data
            as quickly as possible or when loading hierarchical data.
            </para>
            <para>
            The current user has to have the permission to change the schema in order to set this property.
            </para></remarks>
            <value>True, if the trigger is enabled; otherwise, false.</value>
            <example>
              The following example shows how to disable reference checking.
            <code>
                using System;
                using System.Data.Common;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating two tables
                        var firstTable = domain.AddTable("first_table");
                        var secondTable = domain.AddTable("second_table");
            
                        firstTable.GrantAll();
                        secondTable.GrantAll();
            
                        //Creating a reference column
                        var refColumn = RefColumn.Add(firstTable, "ref_col");
            
                        refColumn.AddTarget(secondTable);
            
                        // Trying to insert invalid value
                        try
                        {
                            firstTable.InsertRow(refColumn.Value(Guid.NewGuid()));
                        }
                        catch(DbException)
                        {
                            Console.WriteLine("Inserting a invalid reference value is forbidden");
                        }
            
                        Console.WriteLine("Disabling the check trigger");
            
                        refColumn.ReferenceChecking = false;
            
                        // Inserting an invalid value
                        firstTable.InsertRow(refColumn.Value(Guid.NewGuid()));
            
                        if (firstTable.RowCount == 1)
                            Console.WriteLine("An invalid reference value was inserted");
                    }
                }
            </code>  
            </example>
        </member>
        <member name="T:Centido.Core.Configuration.DomainElement">
            <summary>
              Domain parameters in a data access application section
            </summary>
        </member>
        <member name="P:Centido.Core.Configuration.DomainElement.Name">
            <summary>
              Domain name
            </summary>
        </member>
        <member name="P:Centido.Core.Configuration.DomainElement.DbProviderName">
            <summary>
              Database provider name
            </summary>
        </member>
        <member name="P:Centido.Core.Configuration.DomainElement.DbConnection">
            <summary>
              Database connection string
            </summary>
        </member>
        <member name="P:Centido.Core.Configuration.DomainElement.DbSchema">
            <summary>
              Database schema name
            </summary>
        </member>
        <member name="T:Centido.Core.Dto.DateTimeColumnDto">
            <summary>
              A data transfering object for a datetime table column.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.DateTimeColumnDto.XmlTag">
            <summary>
              The name of the xml tag that is used to store this object.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.DateTimeColumnDto.CurrentXmlSchemaVersion">
            <summary>
              The current xml schema version.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.DateTimeColumnDto.DefaultValueTag">
            <summary>
              The name of the xml tag that is used to store the column default value.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.DateTimeColumnDto.MinimumTag">
            <summary>
              The name of the xml tag that is used to store the column minimum value.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.DateTimeColumnDto.MaximumTag">
            <summary>
              The name of the xml tag that is used to store the column maximum value.
            </summary>
        </member>
        <member name="M:Centido.Core.Dto.DateTimeColumnDto.GetSchema">
            <summary>
              This method is reserved and should not be used. When implementing the IXmlSerializable interface, you should return null (Nothing in Visual Basic) from this method, and instead, if specifying a custom schema is required, apply the <see cref="T:System.Xml.Serialization.XmlSchemaProviderAttribute"/> to the class.
            </summary>
            <returns>
              An <see cref="T:System.Xml.Schema.XmlSchema"/> that describes the XML representation of the object that is produced by the <see cref="M:System.Xml.Serialization.IXmlSerializable.WriteXml(System.Xml.XmlWriter)"/> method and consumed by the <see cref="M:System.Xml.Serialization.IXmlSerializable.ReadXml(System.Xml.XmlReader)"/> method.
            </returns>
        </member>
        <member name="M:Centido.Core.Dto.DateTimeColumnDto.ReadXml(System.Xml.XmlReader)">
            <summary>
              Generates an object from its XML representation.
            </summary>
            <param name="reader">The <see cref="T:System.Xml.XmlReader"/> stream from which the object is deserialized. 
            </param>
        </member>
        <member name="M:Centido.Core.Dto.DateTimeColumnDto.WriteXml(System.Xml.XmlWriter)">
            <summary>
              Converts an object into its XML representation.
            </summary>
            <param name="writer">The <see cref="T:System.Xml.XmlWriter"/> stream to which the object is serialized. 
            </param>
        </member>
        <member name="M:Centido.Core.Dto.DateTimeColumnDto.CopyTo(Centido.Core.DateTimeColumn)">
            <summary>
              Copies the properties of the data transfer object to the
            specified datetime column.
            </summary>
            <param name="dateTimeColumn">The datetime column.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="dateTimeColumn"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.DateTimeColumnDto.CreateFrom(Centido.Core.DateTimeColumn)">
            <summary>
              Creates a data transfer object for the specified datetime column.
            </summary>
            <param name="dateTimeColumn">The specified datetime column.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="dateTimeColumn"/> is null.</exception>
            <returns>Returns the data transfer object for the specified datetime column.</returns>
        </member>
        <member name="P:Centido.Core.Dto.DateTimeColumnDto.DefaultValue">
            <summary>
              Gets or sets the default value of the column.
            </summary>
        </member>
        <member name="P:Centido.Core.Dto.DateTimeColumnDto.Minimum">
            <summary>
              Gets or sets the column minimum.
            </summary>
        </member>
        <member name="P:Centido.Core.Dto.DateTimeColumnDto.Maximum">
            <summary>
              Gets or sets the column maximum.
            </summary>
        </member>
        <member name="T:Centido.Core.Dto.IntColumnDto">
            <summary>
              A data transfering object for an integer table column.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.IntColumnDto.XmlTag">
            <summary>
              The name of the xml tag that is used to store this object.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.IntColumnDto.CurrentXmlSchemaVersion">
            <summary>
              The current xml schema version.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.IntColumnDto.DefaultValueTag">
            <summary>
              The name of the xml tag that is used to store the column default value.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.IntColumnDto.MaximumTag">
            <summary>
              The name of the xml tag that is used to store the column maximum value.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.IntColumnDto.MinimumTag">
            <summary>
              The name of the xml tag that is used to store the column minimum value.
            </summary>
        </member>
        <member name="M:Centido.Core.Dto.IntColumnDto.GetSchema">
            <summary>
              This method is reserved and should not be used. When implementing the IXmlSerializable interface, you should return null (Nothing in Visual Basic) from this method, and instead, if specifying a custom schema is required, apply the <see cref="T:System.Xml.Serialization.XmlSchemaProviderAttribute"/> to the class.
            </summary>
            <returns>
              An <see cref="T:System.Xml.Schema.XmlSchema"/> that describes the XML representation of the object that is produced by the <see cref="M:System.Xml.Serialization.IXmlSerializable.WriteXml(System.Xml.XmlWriter)"/> method and consumed by the <see cref="M:System.Xml.Serialization.IXmlSerializable.ReadXml(System.Xml.XmlReader)"/> method.
            </returns>
        </member>
        <member name="M:Centido.Core.Dto.IntColumnDto.ReadXml(System.Xml.XmlReader)">
            <summary>
              Generates an object from its XML representation.
            </summary>
            <param name="reader">The <see cref="T:System.Xml.XmlReader"/> stream from which the object is deserialized. 
            </param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="reader"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.IntColumnDto.WriteXml(System.Xml.XmlWriter)">
            <summary>
              Converts an object into its XML representation.
            </summary>
            <param name="writer">The <see cref="T:System.Xml.XmlWriter"/> stream to which the object is serialized. 
            </param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="writer"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.IntColumnDto.CopyTo(Centido.Core.IntColumn)">
            <summary>
              Copies the properties of the data transfer object to the
            specified integer column.
            </summary>
            <param name="intColumn">The integer column.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="intColumn"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.IntColumnDto.CreateFrom(Centido.Core.IntColumn)">
            <summary>
              Creates a data transfer object for the specified integer column.
            </summary>
            <param name="intColumn">The specified integer column.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="intColumn"/> is null.</exception>
            <returns>Returns the data transfer object for the specified integer column.</returns>
        </member>
        <member name="P:Centido.Core.Dto.IntColumnDto.DefaultValue">
            <summary>
              Gets or sets the column default value.
            </summary>
        </member>
        <member name="P:Centido.Core.Dto.IntColumnDto.Maximum">
            <summary>
              Gets or sets the column maximum value.
            </summary>
        </member>
        <member name="P:Centido.Core.Dto.IntColumnDto.Minimum">
            <summary>
              Gets or sets the column minimum value.
            </summary>
        </member>
        <member name="T:Centido.Core.BigIntColumn">
            <summary>
              A big integer table column.
            </summary>
            <remarks>A big integer column can store integer values from -9 223 372 036 854 775 808 
            to 9 223 372 036 854 775 807.</remarks>
            <example>
              The following example shows how to create a big integer column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
            
                        //Creating a big integer column
                        var column = table.AddColumn("my_column", ColumnType.BigInteger)
                            as BigIntColumn;
            
                        //Inserting a big integer value
                        var id = table.InsertRow(column.Value(long.MaxValue));
            
                        Console.WriteLine("Inserted value = {0}", column.Read(id).GetBigInteger());
                    }
                }
            </code>
            </example>
        </member>
        <member name="F:Centido.Core.BigIntColumn._defaultValue">
            <summary>
              The default value of the column.
            </summary>
        </member>
        <member name="F:Centido.Core.BigIntColumn._maximum">
            <summary>
              The maximum value of the column.
            </summary>
        </member>
        <member name="F:Centido.Core.BigIntColumn._minimum">
            <summary>
              The minimum value of the column.
            </summary>
        </member>
        <member name="M:Centido.Core.BigIntColumn.#ctor(System.Guid,Centido.Core.Table)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.BigIntColumn"/> class
              for the specified column id and parent table.
            </summary>
            <param name="columnId">The column id.</param>
            <param name="table">The parent table.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.BigIntColumn.#ctor(System.Guid,Centido.Core.Table,System.String,System.String,System.String,System.Boolean,System.Int32,System.Int32)">
            <summary>
              Initializes a new instance of the <see cref="T:Centido.Core.BigIntColumn"/> class
              for the specified column id, name, display name,
            description, nullability, order index, customization level and parent table.
            </summary>
            <param name="columnId">The column id.</param>
            <param name="table">The parent table.</param>
            <param name="columnName">The column name.</param>
            <param name="displayName">The column display name.</param>
            <param name="description">The column description.</param>
            <param name="isNotNull">The column ability to hold null values.</param>
            <param name="orderIndex">The column order index.</param>
            <param name="customizationlevel">The column customization level.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
        </member>
        <member name="M:Centido.Core.BigIntColumn.Refresh">
            <summary>
              Refreshes the properties of the column.
            </summary>
        </member>
        <member name="M:Centido.Core.BigIntColumn.Add(Centido.Core.Table,System.String)">
            <summary>
              Adds a new big integer column with the specified name to the specified table.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to execute this function.</remarks>
            <param name="table">The table.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is a column with the same name in the same user-defined table.</exception>
            <returns>Returns the newly created big integer table column.</returns>
            <example>
              The following example shows how to add a big integer column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a big integer table column
                        var column = BigIntColumn.Add(table, "my_column");
            
                        //Setting the column properties
                        column.Maximum = 10;
                        column.Minimum = 0;
                        column.DefaultValue = 0;
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.BigIntColumn.Add(Centido.Core.Table,System.Guid,System.String)">
            <summary>
              Adds a new big integer table column with the specified id and name to the specified table.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to execute this function.</remarks>
            <param name="table">The table.</param>
            <param name="columnId">The column id.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown the current user has no permission to execute this function.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when there is a column with the same id or the same name in the same user-defined table.</exception>
            <returns>Returns the newly created big integer table column.</returns>
            <example>
              The following example shows how to create a big integer table column and set its properties.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a big integer table column
                        var column = BigIntColumn.Add(table, Guid.NewGuid(), "my_column");
            
                        //Setting the column properties
                        column.Maximum = 10;
                        column.Minimum = 0;
                        column.DefaultValue = 0;
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.BigIntColumn.Ensure(Centido.Core.Table,System.String)">
            <summary>
              Ensures that the table contains a big integer column with the specified name.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to execute this function.</remarks>
            <param name="table">The table.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to add a column and
            the current user has no permission to change the schema.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the 
            specified name but different column type.</exception>
            <returns>Returns a big integer table column with the specified name.</returns>
            <example>
              The following example shows how to ensure that a table has a big integer column with the specified name.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a big integer table column
                        table.AddColumn("first_column", ColumnType.BigInteger);
            
                        //Ensuring the first column
                        BigIntColumn.Ensure(table, "first_column");
                        //Ensuring the second column
                        BigIntColumn.Ensure(table, "second_column");
            
                        foreach(var column in table.Columns)
                            Console.WriteLine("Table column: name = {0}, type = {1}", column.Name, column.ColumnType);
                    }
                }
            </code>
            </example>
        </member>
        <member name="M:Centido.Core.BigIntColumn.Ensure(Centido.Core.Table,System.Guid,System.String)">
            <summary>
              Ensures that the table contains a big integer column with the specified id and the specified name.
            </summary>
            <param name="table">The table.</param>
            <param name="columnId">The column id.</param>
            <param name="columnName">The column name.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="table"/> is null.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to add a column and
            the current user has no permission to change the schema.</exception>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="columnName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is an empty string.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="columnName"/> is not a valid identifier.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the
            specified id but different column name.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the 
            specified id but different column type.</exception>
            <exception cref="T:Centido.Core.DbOperationException">Thrown when the table already has a column with the specified name
            but different column id.</exception>
            <returns>Returns the table column with the specified id, the specified name and the specified type.</returns>
            <returns>Returns the table column with the specified id, the specified name and the specified type.</returns>
            <example>
              The following example shows how to ensure a big integer column with the specified id and
            the specified name.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        domain.DeleteAll();
                        
                        //Creating a new table
                        var table = domain.AddTable("my_table");
            
                        //Creating a table column
                        var columnId = Guid.NewGuid();
                        table.AddColumn(columnId, "first_column", ColumnType.BigInteger);
            
                        //Ensuring the first column
                        BigIntColumn.Ensure(table, columnId, "first_column");
                        //Ensuring the second column
                        BigIntColumn.Ensure(table, Guid.NewGuid(), "second_column");
            
                        foreach(var column in table.Columns)
                            Console.WriteLine("Table column: name = {0}, type = {1}", column.Name, column.ColumnType);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.BigIntColumn.ColumnType">
            <summary>
              Gets the column type.
            </summary>
        </member>
        <member name="P:Centido.Core.BigIntColumn.ValueOdbcType">
            <summary>
              Gets the column value database type.
            </summary>
        </member>
        <member name="P:Centido.Core.BigIntColumn.BackEndTableName">
            <summary>
              Gets the backend table name.
            </summary>
        </member>
        <member name="P:Centido.Core.BigIntColumn.Maximum">
            <summary>
              Gets or sets the maximum value of the column.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to set this property.</remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to set the property.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to set this property to true and there are rows that contain invalid values.</exception>
            <example>
              The following example shows how to set the maximum value of the column.
            <code>
                using System;
                using System.Data.Common;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
            
                        //Creating a big integer column
                        var column = table.AddColumn("my_column", ColumnType.BigInteger)
                            as BigIntColumn;
            
                        //Setting the column maximum
                        column.Maximum = 1;
            
                        //Trying to insert an invalid value
                        try
                        {
                            table.InsertRow(column.Value(2));
                        }
                        catch(DbException)
                        {
                            Console.WriteLine("Inserting values greater than the maximum is forbidden");
                        }
            
                        Console.WriteLine("Table: row count = {0}", table.RowCount);
            
                        //Inserting a valid value
                        table.InsertRow(column.Value(0));
            
                        Console.WriteLine("Table: row count = {0}", table.RowCount);
                    }
                }
            </code>
            </example>
        </member>
        <member name="P:Centido.Core.BigIntColumn.Minimum">
            <summary>
              Gets or sets the minimum value of the column.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to set this property.</remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to set the property.</exception>
            <exception cref="T:System.Data.Common.DbException">Thrown when trying to set this property to true and there are rows that contain invalid values.</exception>
            <example>
                using System;
                using System.Data.Common;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
            
                        //Creating a big integer column
                        var column = table.AddColumn("my_column", ColumnType.BigInteger)
                            as BigIntColumn;
            
                        //Setting the column minimum
                        column.Minimum = 1;
            
                        //Trying to insert an invalid value
                        try
                        {
                            table.InsertRow(column.Value(0));
                        }
                        catch(DbException)
                        {
                            Console.WriteLine("Inserting values less than the minimum is forbidden");
                        }
            
                        Console.WriteLine("Table: row count = {0}", table.RowCount);
            
                        //Inserting a valid value
                        table.InsertRow(column.Value(2));
            
                        Console.WriteLine("Table: row count = {0}", table.RowCount);
                    }
                }
            </example>
        </member>
        <member name="P:Centido.Core.BigIntColumn.DefaultValue">
            <summary>
              Gets or sets the default value of the column.
            </summary>
            <remarks>The current user has to have the permission to change the schema in order to set the property.</remarks>
            <exception cref="T:System.Data.Common.DbException">Thrown when the current user has no permission to the property.</exception>
            <example>
              The following example shows how to set the default value of the column.
            <code>
                using System;
                using Centido.Core;
            
                class Sample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                        
                        //Creating a table
                        var table = domain.AddTable("my_table");
                        table.GrantAll();
            
                        //Creating a big integer column
                        var column = table.AddColumn("my_column", ColumnType.BigInteger)
                            as BigIntColumn;
            
                        //Setting the column default value
                        column.DefaultValue = 1;
            
                        //Inserting a row
                        var id = table.InsertRow();
            
                        Console.WriteLine("Inserted value = {0}", column.Read(id).GetBigInteger());
                    }
                }
            </code>
            </example>
        </member>
        <member name="T:Centido.Core.DbErrorCode">
            <summary>
              API specific database error codes.
            </summary>
            <remarks>
              Some database errors may result from the API validation logic.
              In that case errors can be distinguished be the their error codes.
            </remarks>
            <example>
              The following example  demonstrates how to obtain an API specific database error code.
              <code>
                using System;
                using System.Data.Common;
                using Centido.Core;
            
                class ErrorCodeSample
                {
                    static void Main()
                    {
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=MyDb;User Id=admin;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                    
                        domain.DeleteAll();
                    
                        //Adding a new table
                        var table = domain.AddTable("my_table");
                    
                        //Granting insert permissions
                        table.Grant(DataAction.Insert);
                        table.Grant(DataAction.Select);
                        table.Grant(DataAction.Update);
                        table.Grant(DataAction.Delete, AccessLevel.Own);
            
                        //Inserting a row
                        var id = table.InsertRow();
                    
                        //Changing the owner of the row to someone else
                        table.UpdateRow(id, table.SystemColumns.Owner.Value("someone_else"));
                    
                        //Trying to delete this row
                        try
                        {
                            table.DeleteRow(id);
                        }
                        catch(DbException e)
                        {
                            switch(e.GetErrorCode())
                            {
                                case DbErrorCode.InsufficientPrivilegesToDeleteTheRow:
                                    Console.WriteLine("Insufficient privileges to delete the row.");
                                    break;
                                case DbErrorCode.DeletingWhenThereAreRefsWithFalseCascadeDelete:
                                    Console.WriteLine("Deleting when there references with false cascade delete.");
                                    break;
                                case DbErrorCode.None:
                                    Console.WriteLine("Unknown error.");
                                    break;
                            }
                        }
                    }
                }    
              </code>
            </example>
        </member>
        <member name="F:Centido.Core.DbErrorCode.DeletingWhenThereAreRefsWithFalseCascadeDelete">
            <summary>
              Deleting when there are references on the row with cascade delete set to false.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.RestoringWhenThereIsNoReferencedRow">
            <summary>
              Restoring a row when there is no row that was referenced by it.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.InsufficientPrivilegesToUpdateTheRow">
            <summary>
              Insufficient privileges to update the row.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.InsufficientPrivilegesToDeleteTheRow">
            <summary>
              Insufficient privileges to delete the row.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.DeletingSystemColumn">
            <summary>
              Deleting a system column.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.RenamingSystemColumn">
            <summary>
              Renaming a system column.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.RenamingColumnIsNotSupportedByDbms">
            <summary>
              Renaming a column is not supported by the dbms.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.ChangingSystemPropertyOfSystemColumn">
            <summary>
              Changing a system property of a system column.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.DeletingNonexistentEnumMember">
            <summary>
              Deleting a nonexistent enum member.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.ColumnWasNotFound">
            <summary>
              Column was not found.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.AddingColumnWithDuplicateId">
            <summary>
              Adding a column with a duplicate id.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.AddingColumnWithDuplicateName">
            <summary>
              Adding a column with a duplicate name.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.AddingDuplicateRefTarget">
            <summary>
              Adding a duplicate reference target.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.DeletingNonexistentRefTarget">
            <summary>
              Deleting a nonexistent reference target.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.ReferencedRowWasNotFound">
            <summary>
              Referenced row was not found.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.AddingTableWithDuplicateId">
            <summary>
              Adding a table with a duplicate id.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.AddingTableWithDuplicateName">
            <summary>
              Adding a table with a duplicate name.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.TableWasNotFound">
            <summary>
              Table was not found.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.AddingIndexWithDuplicateId">
            <summary>
              Adding an index with a duplicate id.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.AddingIndexWithDuplicateColumnSet">
            <summary>
              Adding an index with a duplicate column set.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.DeletingNonexistentIndex">
            <summary>
              Deleting a nonexistent index.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.AddingUnitWithDuplicateId">
            <summary>
              Adding a unit with a duplicate id.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.UnitWasNotFound">
            <summary>
              Specified unit was not found.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.BuildingCycleOfUnits">
            <summary>
              Building a cycle of units.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.AddingRoleWithDuplicateName">
            <summary>
              Adding a role with a duplicate name.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.RoleWasNotFound">
            <summary>
              Specified role was not found.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.UserWasNotFound">
            <summary>
              Specified user was not found.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.AddingUserInRoleTwice">
            <summary>
              Adding a user in a role twice.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.AddingRoleInRoleTwice">
            <summary>
              Adding a role in role twice.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.UserEnrollmentWasNotFound">
            <summary>
              User enrollment was not found.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.RoleEnrollmentWasNotFound">
            <summary>
              Role enrollment was not found.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.AddingUserWithDuplicateName">
            <summary>
              Adding a user with a duplicate name.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.ChangingCurrentUserCanLogon">
            <summary>
              Changing the current user logging ability.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.ChangingCurrentUserCanChangeSecurity">
            <summary>
              Changing the current user ability to change security settings.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.CurrentUserHasNoPermissionToChangeSecurity">
            <summary>
              Current user has no permission to change security settings.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.InsufficientPrivilegesToChangeSecurityPermissions">
            <summary>
              Insufficient privileges to change security settings permissions.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.DeletingCurrentUser">
            <summary>
              Deleting the current user.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.PrincipalWasNotFound">
            <summary>
              Specified principal was not found.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.AddingDuplicateTablePermission">
            <summary>
              Adding a duplicate table permission.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.TablePermissionWasNotFound">
            <summary>
              Specified table permission was not found.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.AddingDuplicateUnitParent">
            <summary>
              Adding a duplicate unit parent.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.UnitParentWasNotFound">
            <summary>
              Specified unit parent was not found.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.AddingDuplicateUserUnit">
            <summary>
              Adding a duplicate user unit.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.UserInUnitWasNotFound">
            <summary>
              User unit was not found.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.AddingDuplicateEnumMember">
            <summary>
              Adding a duplicate enumeration member.
            </summary>
        </member>
        <member name="F:Centido.Core.DbErrorCode.None">
            <summary>
              Unknown error
            </summary>
        </member>
        <member name="T:Centido.Core.OdpNetConnectionStringBuilder">
            <summary>
              ODP.NET connection string builder
            </summary>
        </member>
        <member name="F:Centido.Core.OdpNetConnectionStringBuilder.DefaultPooling">
            <summary>
              Connection pooling
            </summary>
        </member>
        <member name="F:Centido.Core.OdpNetConnectionStringBuilder.DefaultMinPoolSize">
            <summary>
              Minimum number of connections in a pool
            </summary>
        </member>
        <member name="F:Centido.Core.OdpNetConnectionStringBuilder.DefaultMaxPoolSize">
            <summary>
              Maximum number of connections in a pool
            </summary>
        </member>
        <member name="F:Centido.Core.OdpNetConnectionStringBuilder.DefaultConnectionLifetime">
            <summary>
              Maximum life time (in seconds) of the connection
            </summary>
        </member>
        <member name="F:Centido.Core.OdpNetConnectionStringBuilder.DefaultConnectionTimeout">
            <summary>
              Maximum time (in seconds) to wait for a free connection from the pool
            </summary>
        </member>
        <member name="F:Centido.Core.OdpNetConnectionStringBuilder.DefaultDecrementPoolSize">
            <summary>
              Number of connections that are closed when an excessive amount of established connections are unused
            </summary>
        </member>
        <member name="F:Centido.Core.OdpNetConnectionStringBuilder.DefaultIncrementPoolSize">
            <summary>
              Number of new connections to be created when all connections in the pool are in use
            </summary>
        </member>
        <member name="F:Centido.Core.OdpNetConnectionStringBuilder.DefaultStatementCacheSize">
            <summary>
              Statement cache enabled and cache size, that is, the maximum number of statements that can be cached
            </summary>
        </member>
        <member name="F:Centido.Core.OdpNetConnectionStringBuilder.DefaultValidateConnection">
            <summary>
              Validation of connections coming from the pool
            </summary>
        </member>
        <member name="F:Centido.Core.OdpNetConnectionStringBuilder.DefaultStatementCachePurge">
            <summary>
              Statement cache purged when the connection goes back to the pool
            </summary>
        </member>
        <member name="F:Centido.Core.OdpNetConnectionStringBuilder.DefaultPersistSecurityInfo">
            <summary>
              Retrieval of the password in the connection string
            </summary>
        </member>
        <member name="F:Centido.Core.OdpNetConnectionStringBuilder.DefaultMetadataPooling">
            <summary>
              Caches metadata information
            </summary>
        </member>
        <member name="F:Centido.Core.OdpNetConnectionStringBuilder.DefaultLoadBalancing">
            <summary>
              Enables ODP.NET connection pool to balance work requests across Oracle RAC instances based on the load balancing advisory and service goal
            </summary>
        </member>
        <member name="F:Centido.Core.OdpNetConnectionStringBuilder.DefaultHaEvents">
            <summary>
              Enables ODP.NET connection pool to proactively remove connections from the pool when an Oracle RAC service, service member, database, or node goes down. Works with RAC, Data Guard, or a single database instance
            </summary>
        </member>
        <member name="F:Centido.Core.OdpNetConnectionStringBuilder.DefaultEnlist">
            <summary>
              Controls the enlistment behavior and capabilities of a connection in context of COM+ transactions or System.Transactions
            </summary>
        </member>
        <member name="F:Centido.Core.OdpNetConnectionStringBuilder._connectionLifetime">
            <summary>
              Maximum life time (in seconds) of the connection
            </summary>
        </member>
        <member name="F:Centido.Core.OdpNetConnectionStringBuilder._connectionTimeout">
            <summary>
              Maximum time (in seconds) to wait for a free connection from the pool
            </summary>
        </member>
        <member name="F:Centido.Core.OdpNetConnectionStringBuilder._decrementPoolSize">
            <summary>
              Number of connections that are closed when an excessive amount of established connections are unused
            </summary>
        </member>
        <member name="F:Centido.Core.OdpNetConnectionStringBuilder._enlist">
            <summary>
              Controls the enlistment behavior and capabilities of a connection in context of COM+ transactions or System.Transactions
            </summary>
        </member>
        <member name="F:Centido.Core.OdpNetConnectionStringBuilder._haEvents">
            <summary>
              Enables ODP.NET connection pool to proactively remove connections from the pool when an Oracle RAC service, service member, database, or node goes down. Works with RAC, Data Guard, or a single database instance
            </summary>
        </member>
        <member name="F:Centido.Core.OdpNetConnectionStringBuilder._incrementPoolSize">
            <summary>
              Number of new connections to be created when all connections in the pool are in use
            </summary>
        </member>
        <member name="F:Centido.Core.OdpNetConnectionStringBuilder._loadBalancing">
            <summary>
              Enables ODP.NET connection pool to balance work requests across Oracle RAC instances based on the load balancing advisory and service goal
            </summary>
        </member>
        <member name="F:Centido.Core.OdpNetConnectionStringBuilder._maxPoolSize">
            <summary>
              Maximum number of connections in a pool
            </summary>
        </member>
        <member name="F:Centido.Core.OdpNetConnectionStringBuilder._metadataPooling">
            <summary>
              Caches metadata information
            </summary>
        </member>
        <member name="F:Centido.Core.OdpNetConnectionStringBuilder._minPoolSize">
            <summary>
              Minimum number of connections in a pool
            </summary>
        </member>
        <member name="F:Centido.Core.OdpNetConnectionStringBuilder._persistSecurityInfo">
            <summary>
              Retrieval of the password in the connection string
            </summary>
        </member>
        <member name="F:Centido.Core.OdpNetConnectionStringBuilder._pooling">
            <summary>
              Connection pooling
            </summary>
        </member>
        <member name="F:Centido.Core.OdpNetConnectionStringBuilder._statementCachePurge">
            <summary>
              Statement cache purged when the connection goes back to the pool
            </summary>
        </member>
        <member name="F:Centido.Core.OdpNetConnectionStringBuilder._statementCacheSize">
            <summary>
              Statement cache enabled and cache size, that is, the maximum number of statements that can be cached
            </summary>
        </member>
        <member name="F:Centido.Core.OdpNetConnectionStringBuilder._validateConnection">
            <summary>
              Validation of connections coming from the pool
            </summary>
        </member>
        <member name="F:Centido.Core.OdpNetConnectionStringBuilder._dbaPrivilege">
            <summary>
            Administrative privileges: SYSDBA or SYSOPER
            </summary>
        </member>
        <member name="M:Centido.Core.OdpNetConnectionStringBuilder.Build">
            <summary>
              Build connection string
            </summary>
            <returns></returns>
        </member>
        <member name="M:Centido.Core.OdpNetConnectionStringBuilder.Parse(System.String)">
            <summary>
              Parse connection string
            </summary>
            <param name = "connectionString">Connection string</param>
        </member>
        <member name="M:Centido.Core.OdpNetConnectionStringBuilder.ParseHost(System.String)">
            <summary>
              Parse host name from the connection string
            </summary>
            <param name = "connectionString">Connection string</param>
            <returns>Host name</returns>
        </member>
        <member name="M:Centido.Core.OdpNetConnectionStringBuilder.ParsePortNumber(System.String)">
            <summary>
              Parse port number from the connection string
            </summary>
            <param name = "connectionString">Connection string</param>
            <returns>Port number</returns>
        </member>
        <member name="M:Centido.Core.OdpNetConnectionStringBuilder.ParseDbName(System.String)">
            <summary>
              Parse db name from the connection string
            </summary>
            <param name = "connectionString">Connection string</param>
            <returns>Db name</returns>
        </member>
        <member name="M:Centido.Core.OdpNetConnectionStringBuilder.CreateNew">
            <summary>
              Creates a new connection string builder of the current type.
            </summary>
            <returns>Returns a new connection string builder that has the same type
            as the current one.</returns>
        </member>
        <member name="P:Centido.Core.OdpNetConnectionStringBuilder.Pooling">
            <summary>
              Connection pooling
            </summary>
        </member>
        <member name="P:Centido.Core.OdpNetConnectionStringBuilder.MinPoolSize">
            <summary>
              Minimum number of connections in a pool
            </summary>
        </member>
        <member name="P:Centido.Core.OdpNetConnectionStringBuilder.MaxPoolSize">
            <summary>
              Maximum number of connections in a pool
            </summary>
        </member>
        <member name="P:Centido.Core.OdpNetConnectionStringBuilder.ConnectionLifetime">
            <summary>
              Maximum life time (in seconds) of the connection
            </summary>
        </member>
        <member name="P:Centido.Core.OdpNetConnectionStringBuilder.ConnectionTimeout">
            <summary>
              Maximum time (in seconds) to wait for a free connection from the pool
            </summary>
        </member>
        <member name="P:Centido.Core.OdpNetConnectionStringBuilder.DecrementPoolSize">
            <summary>
              Number of connections that are closed when an excessive amount of established connections are unused
            </summary>
        </member>
        <member name="P:Centido.Core.OdpNetConnectionStringBuilder.IncrementPoolSize">
            <summary>
              Number of new connections to be created when all connections in the pool are in use
            </summary>
        </member>
        <member name="P:Centido.Core.OdpNetConnectionStringBuilder.StatementCacheSize">
            <summary>
              Statement cache enabled and cache size, that is, the maximum number of statements that can be cached
            </summary>
        </member>
        <member name="P:Centido.Core.OdpNetConnectionStringBuilder.ValidateConnection">
            <summary>
              Validation of connections coming from the pool
            </summary>
        </member>
        <member name="P:Centido.Core.OdpNetConnectionStringBuilder.StatementCachePurge">
            <summary>
              Statement cache purged when the connection goes back to the pool
            </summary>
        </member>
        <member name="P:Centido.Core.OdpNetConnectionStringBuilder.PersistSecurityInfo">
            <summary>
              Retrieval of the password in the connection string
            </summary>
        </member>
        <member name="P:Centido.Core.OdpNetConnectionStringBuilder.MetadataPooling">
            <summary>
              Caches metadata information
            </summary>
        </member>
        <member name="P:Centido.Core.OdpNetConnectionStringBuilder.LoadBalancing">
            <summary>
              Enables ODP.NET connection pool to balance work requests across Oracle RAC instances based on the load balancing advisory and service goal
            </summary>
        </member>
        <member name="P:Centido.Core.OdpNetConnectionStringBuilder.HaEvents">
            <summary>
              Enables ODP.NET connection pool to proactively remove connections from the pool when an Oracle RAC service, service member, database, or node goes down. Works with RAC, Data Guard, or a single database instance
            </summary>
        </member>
        <member name="P:Centido.Core.OdpNetConnectionStringBuilder.Enlist">
            <summary>
              Controls the enlistment behavior and capabilities of a connection in context of COM+ transactions or System.Transactions
            </summary>
        </member>
        <member name="P:Centido.Core.OdpNetConnectionStringBuilder.DbaPrivilege">
            <summary>
            Administrative privileges: SYSDBA or SYSOPER
            </summary>
        </member>
        <member name="P:Centido.Core.OdpNetConnectionStringBuilder.DbProviderTypeName">
            <summary>
              Db provider type name
            </summary>
        </member>
        <member name="T:Centido.Core.DataSource">
            <summary>
              The data source type.
            </summary>
        </member>
        <member name="F:Centido.Core.DataSource.UserView">
            <summary>
              The user view of the internal table.
            </summary>
        </member>
        <member name="F:Centido.Core.DataSource.InternalTable">
            <summary>
              The internal table.
            </summary>
        </member>
        <member name="T:Centido.Core.Installers">
            <summary>
              A container that stores all metadata installers.
            </summary>
            <remarks>This class helps to create an instance of a metadata installer
            using the name of the database vendor. That can be useful when writing
            a generic schema installer.</remarks>
            <example>
              The following example shows how to get an installer for the specified database vendor.
            <code>
                using System;
                using Centido.Core;
            
                class DomainBuildSample
                {
                    static void Main()
                    {
                        var installer = Installers.GetInstaller("SQLSERVER");
            
                        //Creating an application user and an application database
                        installer.DbProviderName = "System.Data.SqlClient";
                        installer.DbConnectionString = @"Data Source=.\SQLEXPRESS;User Id=sa;Password=P@ssw0rd;";
                        
                        installer.CreateAppUser("AppUser", "P@ssw0rd", "AppDb");
            
                        //Installing the metadata (using the application user credentials)
                        installer.DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=AppDb;User Id=AppUser;Password=P@ssw0rd;";
                        
                        installer.Install();
            
                        //Creating an administrator (using the application user credentials)
                        var domainConfig = new DomainConfiguration()
                        {
                            DbConnectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=AppDb;User Id=AppUser;Password=P@ssw0rd;",
                            DbProviderName = "System.Data.SqlClient"
                        };
                    
                        var domain = Domain.Build(domainConfig);
                        
                        var admin = domain.AddUser("AppAdmin", "P@ssw0rd");
            
                        admin.CanChangeSchema = true;
                        admin.CanChangeSecurity = true;
                    }
                }
            </code>
            </example>
        </member>
        <member name="F:Centido.Core.Installers.Instances">
            <summary>
              A collection of all metadata installers.
            </summary>
        </member>
        <member name="M:Centido.Core.Installers.GetInstaller(System.String)">
            <summary>
              Retrieves a metadata installer for the product of the specified name.
            </summary>
            <param name="productName">The name of the product.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="productName"/> is null.</exception>
            <exception cref="T:System.ArgumentException">Thrown when the value of <paramref name="productName"/> is an empty string.</exception>
            <returns>Returns a metadata installer for the product of the specified name if the one
            exists; otherwise, false.</returns>
        </member>
        <member name="T:Centido.Core.Dto.BinaryColumnDto">
            <summary>
              A data transfering object for a binary table column.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.BinaryColumnDto.XmlTag">
            <summary>
              The name of the xml tag that is used to store this object.
            </summary>
        </member>
        <member name="F:Centido.Core.Dto.BinaryColumnDto.CurrentXmlSchemaVersion">
            <summary>
              The current xml schema version.
            </summary>
        </member>
        <member name="M:Centido.Core.Dto.BinaryColumnDto.GetSchema">
            <summary>
              This method is reserved and should not be used. When implementing the IXmlSerializable interface, you should return null (Nothing in Visual Basic) from this method, and instead, if specifying a custom schema is required, apply the <see cref="T:System.Xml.Serialization.XmlSchemaProviderAttribute"/> to the class.
            </summary>
            <returns>
              An <see cref="T:System.Xml.Schema.XmlSchema"/> that describes the XML representation of the object that is produced by the <see cref="M:System.Xml.Serialization.IXmlSerializable.WriteXml(System.Xml.XmlWriter)"/> method and consumed by the <see cref="M:System.Xml.Serialization.IXmlSerializable.ReadXml(System.Xml.XmlReader)"/> method.
            </returns>
        </member>
        <member name="M:Centido.Core.Dto.BinaryColumnDto.ReadXml(System.Xml.XmlReader)">
            <summary>
              Generates an object from its XML representation.
            </summary>
            <param name="reader">The <see cref="T:System.Xml.XmlReader"/> stream from which the object is deserialized. 
            </param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="reader"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.BinaryColumnDto.WriteXml(System.Xml.XmlWriter)">
            <summary>
              Converts an object into its XML representation.
            </summary>
            <param name="writer">The <see cref="T:System.Xml.XmlWriter"/> stream to which the object is serialized. 
            </param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="writer"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.BinaryColumnDto.CopyTo(Centido.Core.BinaryColumn)">
            <summary>
              Copies the properties of the data transfer object to the
            specified binary column.
            </summary>
            <param name="binaryColumn">The binary column.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="binaryColumn"/> is null.</exception>
        </member>
        <member name="M:Centido.Core.Dto.BinaryColumnDto.CreateFrom(Centido.Core.BinaryColumn)">
            <summary>
              Creates a data transfer object for the specified binary column.
            </summary>
            <param name="binaryColumn">The specified binary column.</param>
            <exception cref="T:System.ArgumentNullException">Thrown when the value of <paramref name="binaryColumn"/> is null.</exception>
            <returns>Returns the data transfer object for the specified binary column.</returns>
        </member>
    </members>
</doc>
